iOS 7 TableView 在 ViewController 和 NavigationBar 中的模糊效果

标签 ios uitableview ios7 autolayout

我开始在 Storyboard中使用 TableViewController 在我的应用中构建 TableView。执行此操作时,当您向下滚动列表时会产生非常酷的效果:移动到导航栏后面的单元格变得模糊。

一段时间后,我不得不从这个 TableViewController 转移到一个内部有 TableView 的 ViewController(我不得不在表格底部添加其他 View )。

为了避免第一个单元格被导航栏隐藏(在其上方),我向顶部和底部布局指南以及 View 的左右边缘添加了约束。

这很好用,但我失去了很酷的模糊滚动效果:单元格似乎在导航栏后面消失了。

我见过人们不使用约束并在界面生成器中放置魔数(Magic Number)的变通方法。我不能这样做,首先是因为我不喜欢它,其次是因为我必须兼容 iOS 6。

为了能够再次从模糊的导航栏效果中获益,我错过了什么?

最佳答案

您必须手动调整表格 View 的 contentInset 并确保表格 View 框架原点为 0, 0。 通过这种方式,表格 View 将位于导航栏下方,但内容和 ScrollView 边缘之间会有一些空白(内容向下移动)。

我建议您使用 View Controller 的 topLayoutGuide 属性来设置正确的 contentInsets,而不是硬编码 64(状态栏 + 导航栏)。 还有 bottomLayoutGuide,您应该在 UITapBar 的情况下使用它。

下面是一些示例代码(viewDidLoad 应该没问题):

// Set edge insets
CGFloat topLayoutGuide = self.topLayoutGuide.length;
tableView.contentInset = UIEdgeInsetsMake(topLayoutGuide, 0, 0, 0);

顺便说一句,UIViewController 的这个属性可能对您有帮助(您不需要更改它们的默认值,但我不知道您的 View 层次结构是什么):

  • automaticallyAdjustsScrollViewInsets
  • edgesForExtendedLayout
  • extendedLayoutIncludesOpaqueBars

关于iOS 7 TableView 在 ViewController 和 NavigationBar 中的模糊效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19299481/

相关文章:

ios - '-[UINavigationController setLanguage :]: unrecognized selector sent to instance 0x7f8fba7df4e0'

ios - 仅在纵向模式下强制 UINavigationController

ios - 在 iOS 7 map 上显示路线 : addOverlay has no effect

ios - 如何使用 NSUserDefaults 存储和加载 BOOL 数组或 int 数组? (IOS 7)

ios - 使用自定义高度在 UINavigationBar 中垂直居中元素

ios - 在哪里可以找到用于创建 iPad 应用程序的 Delphi 资源?

ios - 解决深度嵌套的 View Controller 层次结构

ios - 自定义单元格在搜索结果的 UITableView 中不起作用

iPhone : form like new contact

iphone - 为什么我的 UITableView 无法识别 UITableViewCell 中的 Touch?