最近在测试详情页的时候,发现无怨无故的在界面的顶部和尾部分别多出来一部分留白,我这个界面是类似京东的详情页,两页分别用了一个ScrollView,刚进入页面、上下加载页面时都处于正常状态,但是当点击其中一个按钮进入其他页面时就出现这种非正常状态,开始以为是ScrollView的frame或是contentSize引起的,但是调来调去都无法解决这个问题。最后在朋友的帮助下 才找到问题所在(注:scrollView上面的控件大部分是用xib加载的)
无需更改其他代码 只需要添加一行代码:
<pre>
iOS7添加的新特性 自动调整scrollview的 inset 默认为YES
self.automaticallyAdjustsScrollViewInsets = NO;
</pre>
上网搜了一下:
- 导航视图内Push进来的以“TableView”(没有ScrollView截图,就将就一下)为主View的视图,本来我们的cell是放在(0,0)的位置上的,但是考虑到导航栏、状态栏会挡住后面的主视图,而自动把我们的内容(cell、滚动视图里的元素)向下偏移离Top64px(下方位置如果是tarbar向上偏移离Buttom49px、toolbar是44),也就是当我们把navigationBar给隐藏掉时,滚动视图会给我们的内容预留部分的空白Top(所有内容向下偏移20px,因为状态栏的存在)
- 很多人在Nib或者Storyboard中调整视图时,因为xib中有NavigationBar的存在,误导许多人将加入scrollview的高度设置为根视图view的高度,并且加入的控件、子视图、cell等等都是从view的(0,64)开始的