关于iOS的autolayout中导航栏的疑问
2015-11-27 10:53
260 查看
在storyBoard中,如果使用editor>embed>navigation controller 就可以给一个Controller添加一个导航栏控制器
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127102128765-1489763497.png)
这时候拖一个view上去,给这个view添加约束的时候,就会有top layout guide这个选项,这样在横屏,竖屏情况下,view都会紧贴导航栏显示
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127102329874-343862724.png)
但是在新创建一个file的时候,一起创建出来的xib却没有这种选项,要想让view紧贴导航栏显示,必须要将顶部约束成64,但是在横屏状态下就会在导航栏和view中间出现白条,因为横屏状态下状态栏会消失,导航栏会的hight会变小
我曾经尝试使用sizeClass来解决这个问题,在4,5,6 ,6P, 6s上没有问题,但是在6sP上,导航栏在横屏的时候hight没有变,瞬间想吐血
然后我想到了一个比较复杂的解决办法:
利用automaticallyAdjustsScrollViewInsets这个属性来自适应导航栏,具体做法是
先在xib上拖一个scrollView,然后将上下左右约束全都设置为0
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127103604937-107071325.png)
然后再拖一个view到scrollView上,四个约束也全部是0,这时候会出现约束报红,先不管,继续对view添加约束
先添加一个水平约束
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127104317327-1357183245.png)
再添加一个height约束
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127104403609-1018738870.png)
这时候就发现约束报错消失,这样约束之后,scrollview的contentSize的宽就是屏幕的宽度,高是我们对view的height约束
当我们在viewWillAppear方法中添加self.automaticallyAdjustsScrollViewInsets = YES;
这样导航条的位置就会自动被空出来,我们的控件在view上进行约束就可以实现紧贴导航条的效果
最后的重点
虽然这个方法可以解决问题,但是很麻烦,添加的图层也很多,不知道有没有直接设置xib就可以解决的简单方法
哪位大神知道帮帮啊
在下愿意用一颗苹果来换!!!
answer:
在代码中添加
self.edgesForExtendedLayout = UIRectEdgeNone;
就可以实现以导航条为起点高度来进行控件的约束,这个约束到底是什么意思还不是很清楚,以后再来补充
谢谢ashamp大侠的帮助!!!
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127102128765-1489763497.png)
这时候拖一个view上去,给这个view添加约束的时候,就会有top layout guide这个选项,这样在横屏,竖屏情况下,view都会紧贴导航栏显示
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127102329874-343862724.png)
但是在新创建一个file的时候,一起创建出来的xib却没有这种选项,要想让view紧贴导航栏显示,必须要将顶部约束成64,但是在横屏状态下就会在导航栏和view中间出现白条,因为横屏状态下状态栏会消失,导航栏会的hight会变小
我曾经尝试使用sizeClass来解决这个问题,在4,5,6 ,6P, 6s上没有问题,但是在6sP上,导航栏在横屏的时候hight没有变,瞬间想吐血
然后我想到了一个比较复杂的解决办法:
利用automaticallyAdjustsScrollViewInsets这个属性来自适应导航栏,具体做法是
先在xib上拖一个scrollView,然后将上下左右约束全都设置为0
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127103604937-107071325.png)
然后再拖一个view到scrollView上,四个约束也全部是0,这时候会出现约束报红,先不管,继续对view添加约束
先添加一个水平约束
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127104317327-1357183245.png)
再添加一个height约束
![](http://images2015.cnblogs.com/blog/758551/201511/758551-20151127104403609-1018738870.png)
这时候就发现约束报错消失,这样约束之后,scrollview的contentSize的宽就是屏幕的宽度,高是我们对view的height约束
当我们在viewWillAppear方法中添加self.automaticallyAdjustsScrollViewInsets = YES;
这样导航条的位置就会自动被空出来,我们的控件在view上进行约束就可以实现紧贴导航条的效果
最后的重点
虽然这个方法可以解决问题,但是很麻烦,添加的图层也很多,不知道有没有直接设置xib就可以解决的简单方法
哪位大神知道帮帮啊
在下愿意用一颗苹果来换!!!
answer:
在代码中添加
self.edgesForExtendedLayout = UIRectEdgeNone;
就可以实现以导航条为起点高度来进行控件的约束,这个约束到底是什么意思还不是很清楚,以后再来补充
谢谢ashamp大侠的帮助!!!
相关文章推荐
- 行为驱动开发iOS
- iOS开发日记49-详解定位CLLocation
- Nagios 安装
- ios开发之 icon规范+启动图规范+启动页规范
- iOS9适配之应用跳转(URLSchemes)
- iOS开发中导航控制器的基本使用教程
- iOS---设置btn边框
- iOS开发之控制器View的创建
- iOS开发教程:Storyboard全解析
- iOS学习之Table View的简单使用
- IOS 中frame与bounds的区别
- iOS案例:读取指定txt文件,并把文件中的内容输出出来
- iOS案例:读取指定目录下的文件列表
- mrc和arc混编的配置
- 在蜂窝教育iOS培训 增强就业技能提升竞争力
- iOS检测以及提示系统更新
- iOS 利用AVPlayer创建视频播放器
- [ios]AVPlayer 缓冲、 暂停通知和海报帧
- IOS之KVC和KVO(未完待续)
- iOS开发,EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具