美文网首页iOS开发·布局篇
iOS 布局的edgesForExtendedLayout 和

iOS 布局的edgesForExtendedLayout 和

作者: feng_dev | 来源:发表于2016-07-13 16:50 被阅读371次

官方文档链接 UIViewController布局

官方文档截图.png

截图左上角那句话的意思是配置视图的布局行为,然后有一些布局相关的方法和属性

官方文档截图.png
  • edgesForExtendedLayout
  • The extended edges to use for the layout
    这个属性的本意是边缘是否用来延伸布局
    意思是说这个属性布局的时候也使用边缘进行布局,就是全屏布局,就是视图会延伸到navigationBar和tabbar下面。苹果也鼓励开发者全屏布局,所以默认值是UIRectEdgeAll也就是全屏布局。UIRectEdgeNone 是关闭全屏布局。
    edgesForExtendedLayout属性用于替代wantsFullScreenLayout(这个是很久以前的属性了),控制页面显示的范围。
官方文档截图.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 后面。

相关文章

网友评论

本文标题:iOS 布局的edgesForExtendedLayout 和

本文链接:https://www.haomeiwen.com/subject/ahzsjttx.html