【发布时间】:2015-10-10 15:42:18
【问题描述】:
我正在编写我的 UI 代码,我遇到了问题,我的 UIViewController 骑在我的 UINavigationController 酒吧后面。
我用谷歌搜索了一下,似乎有三种解决方案。然而,一切都指的是从 iOS 6 到 iOS 7 的过渡,这一切似乎有点像 hack。我无法想象这仍然是必须完成的方式。
解决方案是去除半透明,这是我不想做的。在某个时间点,我可能希望滚动内容,然后在导航栏的背景中模糊地显示出来。另一种解决方案是通过添加“假”填充来向下移动所有内容。这也不理想,因为我不知道我的内容是否有一天不会超出屏幕,然后如前所述,我希望内容位于导航栏后面。然后是最后一个解决方案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
}
目前我在viewDidLoad() 中使用self.edgesForExtendedLayout = UIRectEdge.None 解决方法,但感觉不对。
感谢有关如何正确处理此问题的任何建议。
【问题讨论】:
-
如果你的 UIViewController 的第一个子视图是 UIScrollView,你可以自动将AdjustScrollViewInsets 设置为 YES 并且滚动视图应该很好地嵌入
标签: swift uiviewcontroller uinavigationcontroller