iOS7 edgesForExtendedLayout&automaticallyAdjustsScrollViewInsets

一、edgesForExtendedLayout

edgesForExtendedLayout是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。因为iOS7鼓励全屏布局,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。有时会加上顶部tool bar的高度 20, 20+44 = 64;
iOS7 edgesForExtendedLayout&automaticallyAdjustsScrollViewInsets_第1张图片
解决方法:

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    // Do any additional setup after loading the view.  
    if (OSVersionIsAtLeastiOS7()) {  
        if ([self respondsToSelector:@selector(edgesForExtendedLayout)])  
        {  
            self.edgesForExtendedLayout = UIRectEdgeNone;  
        }  
    }  
} 

iOS7 edgesForExtendedLayout&automaticallyAdjustsScrollViewInsets_第2张图片
处理完发现变灰了,这时候设置navigationBar为不透明的即可

self.navigationController.navigationBar.translucent = NO;

iOS7 edgesForExtendedLayout&automaticallyAdjustsScrollViewInsets_第3张图片
二、automaticallyAdjustsScrollViewInsets
当 automaticallyAdjustsScrollViewInsets 为 NO 时,tableview 是从屏幕的最上边开始,也就是被
导航栏 & 状态栏覆盖
iOS7 edgesForExtendedLayout&automaticallyAdjustsScrollViewInsets_第4张图片
当 automaticallyAdjustsScrollViewInsets 为 YES 时, tableView 上下滑动时,是可以穿过导航栏&状态栏的,在他们下面有淡淡的浅浅红色。

你可能感兴趣的:(iOS总结)