edgesForExtendedLayout iOS7新特性

edgesForExtendedLayout是一個類型爲UIExtendedEdge的屬性,指定邊緣要延伸的方向。
佈局

由於iOS7鼓勵全屏佈局,它的默認值很天然地是UIRectEdgeAll,四周邊緣均延伸,就是說,若是即便視圖中上有navigationBar,下有tabBar,那麼視圖仍會延伸覆蓋到四周的區域。spa


self.edgesForExtendedLayout = UIRectEdgeNone;

來解決UINavigationBar透明的問題。設置了UIRectEdgeNone以後,你嵌在UIViewController裏面的UITableView和UIScrollView就不會穿過UINavigationBar了,同時UIView的控件也回覆到了iOS6時代。code

不過這個對於Status Bar在iOS7上面的變化是無效的,正確的說應該是部分無效。在存在Navigation部分或者Tabbar部分的時候,上面的代碼能夠使得Status Bar也不載透明(有待驗證,畢竟UIViewController的可用空間被控制了),可是在沒有這兩個部分的時候,Status Bar依舊是會記入UIView範圍的。orm

- (void)viewDidLoad
{
    [super viewDidLoad];

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    {
        self.edgesForExtendedLayout = UIRectEdgeNone;
    }
    
}
相關文章
相關標籤/搜索