做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ù)了。