我最近下载了Xcode 5 DP来测试我在iOS 7中的应用程序.我注意到并确认的第一件事是我的视图边界并不总是调整大小来考虑状态栏和导航栏.
在viewDidLayoutSubviews,我打印视图的边界:
{{0,0},{320,568}}
这导致我的内容出现在导航栏和状态栏下方.
我知道我可以通过获取主屏幕的高度,减去状态栏的高度和导航栏的高度来解释自己的高度,但这似乎是不必要的额外工作.
我该如何解决这个问题?
更新:
我找到了解决这个特定问题的方法.将导航栏的半透明属性设置为NO:
self.navigationController.navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)
这将修复视图在导航栏和状态栏下面的框架.
但是,当您希望导航栏为半透明时,我还没有找到解决此案例的方法.例如,在全屏查看照片时,我希望导航栏是半透明的,并且要在其下方构建视图.这是有效的,但当我切换显示/隐藏导航栏时,我经历了甚至更奇怪的结果.第一个子视图(UIScrollView)每次都会更改其边界.
我一直在阅读很多关于iOS7 UI过渡的内容.
我不能够得到什么这三个属性automaticallyAdjustsScrollViewInsets,extendedLayoutIncludesOpaqueBars,edgesForExtendedLayout?
例如,我试图让我的视图控制器从状态栏下面开始,但我无法实现它.
我有一个在iOS 6中开发的应用程序.但现在在iOS 7中,甚至我的应用程序已经为iOS 6编译,但在iOS 7设备上运行顶部导航栏(iOS 7中的新巨人),我的内容被隐藏了.顶部导航栏覆盖它.如果我用CGRect手动向下移动它在iOS 7中看起来很好,但是现在iOS 6看起来很糟糕(在它上面的空间很大).
该应用程序是使用自动布局关闭构建的,因为自动布局是难以正确设置的方法.
我的问题是,是否有一种简单的方法可以仅针对iOS 7移动内容?我真的不想重新开启自动布局,花一个月时间尝试将所有UI元素重新安装到位.该应用程序相当复杂,有30多个屏幕和屏幕上的大量动画视图.