2010-12-10 48 views
1

基本上,我將全屏UIViewController放到UINavigationController中,並且想切換navigationBarHidden是否顯示。如何在navigationBarHidden設置爲YES時防止UIView滑落一點

Howerever我發現,我將navigationBarHidden設置爲YES後,整個UIView將向下滑動44像素,以便爲navigationBar創建空間。如何禁用此行爲?由於我已經將barStyle設置爲UIBarStyleBlackTranslucent,並且滑動關閉實際上不是必需的。

//init viewController 
[self.navigationController pushViewController:viewController animated:YES]; 

編輯:

我還面臨着推着滾動視圖導航控制器。我發現,設置在導航欄後可見。當我在該狀態下手動滾動視圖時,我的滾動視圖會稍微向下推,scrollView本身會再次滑動。我的問題是如何防止scrollView滑落。

在視圖向下或向上滑動之前,幀大小是相同的。

回答

1

我解決了這個問題,將scrollView添加到UIView中,並將UIView設置爲UIViewController的視圖。

0

我認爲這是UINavigationController的一個缺陷/功能,我不知道有任何方法來禁用它。它很爛。我一直不得不手動重新調整我的視圖框架。這種方式比處理旋轉,滾動視圖時更加痛苦......

+0

可悲的是我也處理推動滾動視圖到導航控制器..我發現將導航欄設置爲可見之後。當我在該狀態下手動滾動視圖時,我的滾動視圖會稍微向下推,scrollView本身會再次滑動。你有什麼主意嗎? – overboming 2010-12-11 05:45:09

1

嘗試重置視圖框架。做這樣的事情,你定了吧隱藏後:

viewController.frame = self.navigationController.frame; 

你總是可以打破它那裏看到什麼值,甚至可能因此建立一個自定義框架,使之適合。我必須這樣做...

+0

我可以在將導航按鈕設置爲隱藏後重置框架,但是如何防止視圖滑動,因爲導航按鈕就像覆蓋視圖一樣? – overboming 2010-12-11 05:25:37

0

添加在您的viewDidLoad方法如下:

self.wantsFullScreenLayout = YES;

它告訴視圖控制器已經將導航欄下的子視圖。

0

可能與contentInset有關。當設置navigationBarHidden屬性時,如果當前視圖控制器的根視圖是滾動視圖,則其contentInsets.top設置爲頂部酒吧的高度。

爲了防止這種情況發生,立即在更改navigationBarHidden的行之後,將self.scrollView.contentInset重置爲您擁有的任何原始值。

0

這裏沒有任何答案適用於我。相反,你可以在viewDidLayoutSubviews()重置的UIScrollView的插圖,如下圖所示(斯威夫特):

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    // prevent the scrollview from adding some inset for the status bar 
    self.detailScroll.contentInset = UIEdgeInsetsZero 
} 
0

我已經試過了,這隻能是這一舉動的導航欄與它的起源y和更改的導航欄的子視圖的alpha爲0 。F;如果想要顯示回來,只需執行反向操作

0

self.navigationController.navigationBar.alpha = 0.0;

這可以是一個簡單的解決方案

相關問題