ror*_*oro 14 uitoolbar uiviewcontroller uinavigationcontroller ios nslayoutconstraint
我有一个UIViewController,MyViewController,顶部有一个UIToolbar.使用界面构建器,doc outline如下所示:
View
- subview1
- subview2
- UIToolbar
- Bar Button Item1
- Bar Button Item2
- Bar Button Item3
Run Code Online (Sandbox Code Playgroud)
MyViewController在我的应用程序中使用.有时它在UINavigationcontroller中,有时它在UIPopoverView中.
当它出现在UINavigationController中时,导航栏会覆盖UIToolbar以及View顶部附近的所有其他内容.在此屏幕截图中,您可以看到UIToolbar完全被遮盖,并且UIButton带有绿色灯泡的图像被部分覆盖.
根据苹果文档
任何需要锚定到顶部和状态栏下方的视图(即UIToolbar,UIButton等)都需要额外的工作才能正确放置.
它继续提供一个解决方案,简单地使用约束将VC的内容向下移动x像素,在我的例子中是UIToolbar.这似乎不是一个好的解决方案,因为它假设您总是希望将内容向下移动到导航栏下方.在我的情况下,我显然不这样做,因为MyViewController并不总是在UINavigationController中.当我使用这些文档中提供的约束解决方案时,在MyViewController不在UINavigationController中的所有情况下,UIToolbar奇怪地从顶部浮动x像素.
我是否错过了我应该如何在UINavigationController中显示VC的内容?非常感谢.
Kyo*_*ang 19
在iOS7中,UINavigationBar具有半透明属性.这样,UINavigationViewController的子VC视图默认位于UINavigationBar下.
如果您不需要获得半透明效果,请使用以下代码关闭此属性.
self.navigationController.navigationBar.translucent = NO
Run Code Online (Sandbox Code Playgroud)
您也可以使用@ ldindu的方式来满足您的需求.
如果您在iOS 7.0版本上运行,则需要设置iOS 7.0中新引入的以下属性,如下所示
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
默认情况下,edgesForExtendedLayout属性设置为UIRectEdgeAll,这意味着视图控制器默认使用全屏布局.
| 归档时间: |
|
| 查看次数: |
5257 次 |
| 最近记录: |