这题有点老了,原谅我想要记下来。
今天写代码遇见了一个奇葩的问题:
提了一个新的需求说要在最上面添加一个提醒的条,最终的效果是这样的:
于是我开始在原来的xib上面改,很快我就做完了:
我觉得这个功能简直就是简单,出来的一定是我想要的效果,结果:
纳尼!!!我翔黄色的提醒的试图呢?去哪里了???于是我开始debug,发现我的提醒试图被导航条遮住了
我搜索了一下才发现,这个是iOS7的新增的属性。
self.edgesForExtendedLayout = UIRectEdgeNone;
设置了试图的全屏显示的模式为None就可以了。这是为什么呢?因为iOS7全屏显示导致提醒的View被导航栏遮住了。
那么问题来了,为什么之前没有设置的时候底部的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是否自动的去设置ScrollView的insets去显示ScrollView,默认为YES这就解释了之前的问题。因为ViewController自动的去设置了tableView的insets使tableView得以正常的显示。