iOS7 edgesForExtendedLayout

http://blog.csdn.net/cny901111/article/details/26529949php

今天在作UISearchBar,UISearchDisplayController時遇到了一個問題,在點擊搜索欄時陰影部分的位置出現誤差ios

以下圖:sql

始終以爲很奇怪,後面單獨作了一個demo,將一樣的代碼拷過去發現顯示正常的。佈局

而後再逐一查看代碼看到以下:spa

 

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

發現可疑之處,Google之iOS 7 教程:讓程序同時支持iOS 6和iOS 7,找到答案。.net

 

緣由:code

 

在iOS 7中,蘋果引入了一個新的屬性,叫作[UIViewController setEdgesForExtendedLayout:],它的默認值爲UIRectEdgeAll。當你的容器是navigation controller時,默認的佈局將從navigation bar的頂部開始。這就是爲何全部的UI元素都往上漂移了44pt。blog

修復這個問題的快速方法就是在方法- (void)viewDidLoad中添加以下一行代碼:教程

1
self.edgesForExtendedLayout = UIRectEdgeNone;

這樣問題就修復了。ci

 

 

參考資料:

http://blog.csdn.net/kmyhy/article/details/20444611

iOS的7:在狀態欄顯示的UITableView:  http://www.sqleye.com/index.php?m=content&c=index&a=show&catid=31&id=25363

相關文章
相關標籤/搜索