我在应用程序中使用TableViewController在故事板中构建了TableView.当您这样做时,当您向下滚动您的列表时,您会有非常酷的效果:移动导航栏后面的单元格变得模糊.
一段时间后,我不得不从TableViewController移动到具有TableView的ViewController(我必须在表的底部添加其他视图).
为了避免导航栏隐藏第一个单元格(在其上),我添加了顶部和底部布局指南以及视图左右边缘的约束.
这样做很好,但是我失去了很酷的模糊滚动效果:细胞似乎正在消失,然后在导航栏后面.
我已经看到解决方法与人没有使用约束和魔术数字在界面构建器.我不能这样做,首先是因为我不喜欢,第二是因为我必须要iOS 6兼容.
我错过了什么能够从模糊的导航栏效果再次受益?
解决方法
您必须手动调整表视图的contentInset,并确保表视图帧原点为0,0.
以这种方式,表格视图将在导航栏的下方,但内容和滚动视图边缘之间会有一些余量(内容被向下移动).
以这种方式,表格视图将在导航栏的下方,但内容和滚动视图边缘之间会有一些余量(内容被向下移动).
我建议您使用view controller的topLayoutGuide属性来设置正确的contentInsets,而不是硬编码64(状态栏导航栏).
还有bottomLayoutGuide,在UITapBars的情况下你应该使用它.
这里是一些示例代码(viewDidLoad应该是罚款):
// Set edge insets CGFloat topLayoutGuide = self.topLayoutGuide.length; tableView.contentInset = UIEdgeInsetsMake(topLayoutGuide,0);
顺便说一下,UIViewController的这个属性可能会帮助你(你不需要改变它们的默认值,但是我不知道你的视图层次结构是什么):
> automaticallyAdjustsScrollViewInsets> edgesForExtendedLayout> extendedLayoutIncludesOpaqueBars