一次全屏显示的Bug

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


原图.png

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


屏幕快照 2016-03-24 下午4.50.54.png

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

我觉得这个功能简直就是简单,出来的一定是我想要的效果,结果:
屏幕快照 2016-03-24 下午4.24.06.png

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


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得以正常的显示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • 自用收藏 原文:http://www.th7.cn/Program/IOS/201606/884245.shtml...
    西瓜皮奥特曼阅读 2,217评论 0 16
  • 你,什么时候出现在我的生命里,我已记不清了,但我想,遇见你的那天,天气一定特别好。 我从未想过,有一天,我会喜欢上...
    屿上屿阅读 215评论 0 2
  • 一、活动目的; 1、为增进同事的感情,提高大家的综合能力,以便于以后彼此间合作; 2、放松小伙伴们的心情,娱乐及丰...
    司马子潇潇阅读 126评论 0 0
  • OSI 七层模型指什么 ​OSI(Open System Interconnect),即开放式系统互联;每一层实现...
    大淀桑浮不起來阅读 424评论 0 0