一次全屏显示的Bug

这题有点老了,原谅我想要记下来。
今天写代码遇见了一个奇葩的问题:


一次全屏显示的Bug_第1张图片
原图.png

提了一个新的需求说要在最上面添加一个提醒的条,最终的效果是这样的:


一次全屏显示的Bug_第2张图片
屏幕快照 2016-03-24 下午4.50.54.png

于是我开始在原来的xib上面改,很快我就做完了:
一次全屏显示的Bug_第3张图片
屏幕快照 2016-03-24 下午4.23.10.png

我觉得这个功能简直就是简单,出来的一定是我想要的效果,结果:
一次全屏显示的Bug_第4张图片
屏幕快照 2016-03-24 下午4.24.06.png

纳尼!!!我翔黄色的提醒的试图呢?去哪里了???于是我开始debug,发现我的提醒试图被导航条遮住了


一次全屏显示的Bug_第5张图片
debug.png

我搜索了一下才发现,这个是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得以正常的显示。

你可能感兴趣的:(一次全屏显示的Bug)