64.automaticallyAdjustsScrollViewInsets解析(面试点:automaticallyAdjustsScrollViewInsets,当设置为YES时(默认YES...

automaticallyAdjustsScrollViewInsets,当设置为YES时(默认YES),如果视图里面存在唯一一个UIScrollView或其子类View,那么它会自动设置相应的内边距,这样可以让scroll占据整个视图,又不会让导航栏遮盖。

当controller上的第一个子视图不是scrollview以及其子类的时候,就会取消内边距。此时原本全屏的scrollview设置的frame(0,0,self.view.frame.size.width,xx)就会从状态栏开始算起,如果应用有导航栏的话,那么就会遮盖住视图的64个高度

解决方案:

  1. self.automaticallyAdjustsScrollViewInsets = NO;禁用掉自动设置的内边距,自行控制controller上index为0的控件以及scrollview控件的位置
  2. self.edgesForExtendedLayout = UIExtendedEdgeNone;这种方式设置,不需要再重新设置index为0的控件的位置以及scrollview的位置,(0,0)默认的依然是从导航栏下面开始算起

1、edgesForExtendedLayout

从iOS7开始,view controllers默认使用全屏布局(full-screen layout)。同时引进了不少属性,使你能更自由地控制view controllers如何布局views
通过设置此属性,可以设定view的边(上、下、左、右)延伸到整个屏幕。

@property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll

typedef enum : NSUInteger {
   UIRectEdgeNone   = 0,
   UIRectEdgeTop    = 1 << 0,
   UIRectEdgeLeft   = 1 << 1,
   UIRectEdgeBottom = 1 << 2,
   UIRectEdgeRight  = 1 << 3,
   UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight 
} UIRectEdge;

edgesForExtendedLayout属性是enum类型UIRectEdge。默认值是UIRectEdgeAll, 意味着view会被拓展到整个屏幕。比如,当你把一个UIViewControllerpush到一个UINavigationController上:
例子:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor greenColor];
}

由此可见ViewController的view延伸到导航栏和状态栏里面,如果将self.edgesForExtendedLayout = UIRectEdgeNone;view就不会延伸到导航栏和状态栏里面

2、automaticallyAdjustsScrollViewInsets

如果view是UIScrollerView或其子类(UITableView)时,设置 self.edgesForExtendedLayout = UIRectEdgeNone;此时UIScrollerView或其子类仍然会被导航栏和状态栏覆盖,此时应该设置automaticallyAdjustsScrollViewInsets=YES(默认也是YES).viewController会table顶部添加inset,所以table会出现在navigation bar的底部。但是滚动时又能覆盖整个屏幕:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容