今天在做UISearchBar,UISearchDisplayController時遇到了一個問題,在點擊搜索欄時陰影部分的位置出現偏差
如下圖:
始終覺得很奇怪,後面單獨做了一個demo,將同樣的代碼拷過去發現顯示正常的。
然後再逐一查看代碼看到如下:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- if (OSVersionIsAtLeastiOS7()) {
- if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
- {
- self.edgesForExtendedLayout = UIRectEdgeNone;
- }
- }
- }
原因:
在iOS 7中,蘋果引入了一個新的屬性,叫做[UIViewController setEdgesForExtendedLayout:]
,它的默認值爲UIRectEdgeAll
。當你的容器是navigation
controller時,默認的佈局將從navigation bar的頂部開始。這就是爲什麼所有的UI元素都往上漂移了44pt。
修復這個問題的快速方法就是在方法- (void)viewDidLoad
中添加如下一行代碼:
<span class="line-number" style="margin:0px; padding:0px">1</span> |
|
這樣問題就修復了。