ios7 view被导航栏遮挡问题的解决
2016-02-16 10:35
781 查看
http://blog.sina.com.cn/s/blog_a8192bdd0101af40.html
self.navigationController.navigationBar.translucent = NO;
如果在iPad上用了split view,并且设置了UINavigationBar的background image,现象为状态栏一直是一片漆黑
UINavigationController will alter the height of its UINavigationBar to either 44 points or 64 points, depending on a rather strange and undocumented set of constraints. If the UINavigationController detects that the top of its view’s frame is visually contiguous
with its UIWindow’s top, then it draws its navigation bar with a height of 64 points. If its view’s top is not contiguous with the UIWindow’s top (even if off by only one point), then it draws its navigation bar in the “traditional” way with a height of 44
points. This logic is performed by UINavigationController even if it is several children down inside the view controller hierarchy of your application. There is no way to prevent this behavior.
意思就是UINavigationBar的高度会自行调整为44或者64,没有确定的预测方法。而之前作为UINavigationBar背景的图片是44高度的。最后换了张64高度,上面留了20px透明的图片搞定
网友还有一种解决办法
IOS7的视图有个边缘延伸的属性:edgesForExtendedLayout,
其默认值是UIExtendedEdgeAll。
只要将其改成UIExtendedEdgeNone即可,要注意的是在IOS7以下版本会出现bug。
所以在UIViewController 的viewDidLoad里加上下面代码就完美解决了这个问题
if( ([[[UIDevicecurrentDevice] systemVersion] doubleValue]>=7.0)) {
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
self.modalPresentationCapturesStatusBarAppearance = NO;
}
self.navigationController.navigationBar.translucent = NO;
如果在iPad上用了split view,并且设置了UINavigationBar的background image,现象为状态栏一直是一片漆黑
UINavigationController will alter the height of its UINavigationBar to either 44 points or 64 points, depending on a rather strange and undocumented set of constraints. If the UINavigationController detects that the top of its view’s frame is visually contiguous
with its UIWindow’s top, then it draws its navigation bar with a height of 64 points. If its view’s top is not contiguous with the UIWindow’s top (even if off by only one point), then it draws its navigation bar in the “traditional” way with a height of 44
points. This logic is performed by UINavigationController even if it is several children down inside the view controller hierarchy of your application. There is no way to prevent this behavior.
意思就是UINavigationBar的高度会自行调整为44或者64,没有确定的预测方法。而之前作为UINavigationBar背景的图片是44高度的。最后换了张64高度,上面留了20px透明的图片搞定
网友还有一种解决办法
IOS7的视图有个边缘延伸的属性:edgesForExtendedLayout,
其默认值是UIExtendedEdgeAll。
只要将其改成UIExtendedEdgeNone即可,要注意的是在IOS7以下版本会出现bug。
所以在UIViewController 的viewDidLoad里加上下面代码就完美解决了这个问题
if( ([[[UIDevicecurrentDevice] systemVersion] doubleValue]>=7.0)) {
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
self.modalPresentationCapturesStatusBarAppearance = NO;
}
相关文章推荐
- iOS开发证书变成“此证书的签发者无效”解决方法
- Xcode 7 error: Missing iOS Distribution signing identity
- iOS自动版本更新
- 关于描述ios证书出现 “此证书的签发者无效的” 解决办法
- iOS开发篇(二)自定义评分星级条RatingBar
- iOS开发之证书无效解决方案
- iOS arc 内存管理
- 关于在ViewDidLoad中修改控件的位置大小无效的问题
- iOS你的证书失效了吗? WWDR该换了!
- 一些常用的iOS第三方库和插件
- 详解iOS应用开发中的ARC内存管理方式
- Nagios的安装与使用详细教程
- iOS开发常用一些快捷键!
- iOS开发~CocoaPods使用详细说明
- iOS图片拉伸
- iOS自定义转场动画实战讲解
- iOS开发 missing iOS distribution signing identity for 。。。
- 苹果承认:iOS设备日期早于1970年5月则变砖头
- iOS 3Dtouch 开发
- iOS-安装CocoaPods 配置第三方类库