iOS7 edgesForExtendedLayout-搜索欄時陰影部分的位置出現(xiàn)偏差

做UISearchBar,UISearchDisplayController時遇到了一個問題,在點(diǎn)擊搜索欄時陰影部分的位置出現(xiàn)偏差

如下圖:

始終覺得很奇怪,后面單獨(dú)做了一個demo,將同樣的代碼拷過去發(fā)現(xiàn)顯示正常的。

然后再逐一查看代碼看到如下:

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view.

if (OSVersionIsAtLeastiOS7()) {

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])

{

self.edgesForExtendedLayout = UIRectEdgeNone;

}

}

}




發(fā)現(xiàn)可疑之處,Google之iOS 7 教程:讓程序同時支持iOS 6和iOS 7,找到答案。

原因:

在iOS 7中,蘋果引入了一個新的屬性,叫做[UIViewController setEdgesForExtendedLayout:],它的默認(rèn)值為UIRectEdgeAll。當(dāng)你的容器是navigation controller時,默認(rèn)的布局將從navigation bar的頂部開始。這就是為什么所有的UI元素都往上漂移了44pt。

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

self.edgesForExtendedLayout = UIRectEdgeNone;

這樣問題就修復(fù)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容