這題有點老了,原諒我想要記下來。
今天寫代碼遇見了一個奇葩的問題:

原圖.png
提了一個新的需求說要在最上面添加一個提醒的條,最終的效果是這樣的:

屏幕快照 2016-03-24 下午4.50.54.png
于是我開始在原來的xib上面改,很快我就做完了:

屏幕快照 2016-03-24 下午4.23.10.png
我覺得這個功能簡直就是簡單,出來的一定是我想要的效果,結(jié)果:

屏幕快照 2016-03-24 下午4.24.06.png
納尼?。?!我翔黃色的提醒的試圖呢?去哪里了???于是我開始debug,發(fā)現(xiàn)我的提醒試圖被導(dǎo)航條遮住了

debug.png
我搜索了一下才發(fā)現(xiàn),這個是iOS7的新增的屬性。
self.edgesForExtendedLayout = UIRectEdgeNone;
設(shè)置了試圖的全屏顯示的模式為None就可以了。這是為什么呢?因為iOS7全屏顯示導(dǎo)致提醒的View被導(dǎo)航欄遮住了。
那么問題來了,為什么之前沒有設(shè)置的時候底部的tableView可以正常的顯示呢?
iOS7為ScrollView添加了一個屬性
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
官方的解釋是這個:
A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets.
這個屬性決定了ViewController是否自動的去設(shè)置ScrollView的insets去顯示ScrollView,默認為YES這就解釋了之前的問題。因為ViewController自動的去設(shè)置了tableView的insets使tableView得以正常的顯示。