2015-10-10 20 views
-1

我在代碼中做我的用戶界面,我遇到了問題,我的UIViewController坐在我的UINavigationController的酒吧後面。UIViewController在UINavigationController Bar後面 - 正確的方法

我GOOGLE了一下,似乎有三個解決方案。但是,一切都是指從iOS 6到iOS 7的過渡,這一切似乎都像是黑客。我無法想象這仍然是它必須完成的方式。

解決方案是去除半透明,我不想這樣做。在某個時間點,我可能需要滾動內容,然後在導航欄的背景中模糊地顯示。另一種解決方案是通過添加「假」填充來移動所有內容。這也不是很理想,因爲我不知道我的內容是否有一天會超出屏幕,然後如前所述,我希望將內容放在導航欄後面。然後是最後的解決方案self.edgesForExtendedLayout = UIRectEdge.None這似乎非常像一個黑客。

也許這不過是因爲我發起的方式我UIViewController,我得加我在這裏AppDelegate使用代碼:

var window: UIWindow? 
var navigationController: UINavigationController? 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    window = UIWindow() 

    if let window = window { 
     window.backgroundColor = UIColor.whiteColor() 

     let vc = CustomUIViewController() 
     navigationController = UINavigationController(rootViewController:vc) 

     if let _ = navigationController { 
      window.rootViewController = navigationController 
     } 
     window.makeKeyAndVisible() 
    } 
    return true 
} 

目前我使用的self.edgesForExtendedLayout = UIRectEdge.NoneviewDidLoad()變通,但它感覺不對。

感謝您對如何正確處理此問題的任何建議。

+0

如果你的UIViewController的第一個子視圖是一個UIScrollView,你可以自動設置AdjustScrollViewInsets爲YES,並且滾動視圖應該很好地嵌入 –

回答

0

將延伸邊緣設置爲無時沒有任何問題 - 這就是對於的設置。

如果你的內容是有效的靜態另一個非常不錯的方法是使用自動佈局和定位您的視圖控制器的主視圖的子視圖的視圖控制器的頂部佈局引導頂部。頂部佈局指南的底部會自動定位,以便與存在時導航欄的底部相匹配。這是「現代的方式」。它的優點是在導航欄消失時(即橫向),它可以繼續工作。

如果你的內容是滾動視圖,然後設置內容,插圖,這樣即使滾動視圖本身向上延伸的導航欄的後面,其內容的頂部是完全可見時滾動視圖滾動所有到頂端的路。運行時會默認自動爲您執行此操作。

+0

你可以給出第二種方法的例子嗎? – Joseph

+0

我發現在過去的這個鏈接:https://developer.apple.com/library/ios/qa/qa1797/_index.html問題IST,我不使用IB和我試圖與topLayoutGuide的'幫助解決它'在'UIViewController'類參考的討論中提到過,但我沒有成功。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instp/UIViewController/topLayoutGuide – Joseph

+0

這也就是沒有得到期望的結果:'oneOfMyViews。 topAnchor.constraintEqualToAnchor(self.topLayoutGuide.bottomAnchor)' – Joseph

相關問題