官方文档链接 UIViewController布局
![](https://img.haomeiwen.com/i1498002/aa4844abeef7524b.png)
截图左上角那句话的意思是配置视图的布局行为,然后有一些布局相关的方法和属性
![](https://img.haomeiwen.com/i1498002/15e642aaaae18966.png)
- edgesForExtendedLayout
- The extended edges to use for the layout
这个属性的本意是边缘是否用来延伸布局
意思是说这个属性布局的时候也使用边缘进行布局,就是全屏布局,就是视图会延伸到navigationBar和tabbar下面。苹果也鼓励开发者全屏布局,所以默认值是UIRectEdgeAll也就是全屏布局。UIRectEdgeNone 是关闭全屏布局。
edgesForExtendedLayout属性用于替代wantsFullScreenLayout(这个是很久以前的属性了),控制页面显示的范围。
![](https://img.haomeiwen.com/i1498002/bc50c43f06e1709a.png)
- automaticallyAdjustsScrollViewInsets
- A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets.
这两行是说布局的时候是否自动给滚动视图设置一个内边距
automaticallyAdjustsScrollViewInsets,当设置为YES时(默认YES),如果视图里面存在唯一一个UIScrollView或其子类View,那么它会自动设置相应的内边距(即整个视图下移64个点),这样可以让scroll占据整个视图,又不会让导航栏遮盖
一般可能遇到的需求
首页的最上面是一个轮播图,要求状态栏和导航栏(这里注意导航栏是透明还是隐藏)的背景都是轮播图,也就是轮播图从屏幕的最左上角开始布局,这个时候,如果你不加一句self.automaticallyAdjustsScrollViewInsets = NO; 那么很可能你的轮播图就下移了64个点(如果你的界面里面只有唯一一个scrollView或者他的子类),即使你设置了轮播图的frame(0,0)也不行
SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0,0,[UIScreen mainScreen].bounds.size.width, 150) delegate:self placeholderImage:[UIImage imageNamed:@"1"]];
本人超级小菜鸟一个,有问题还望多多讨论,欢迎各路大神指点
后来发现好像有两个属性,故事板AutoLayout 里面 需要注意的,top Layout guide 和 bottom
如果最上面的图片 设置约束的时候,设置 距离上面 用的不是View 而是 top ,就不能覆盖到status bar 后面。
网友评论
https://github.com/zhenglibao/FlexLib