iOS 7 UITableView 使用透明的导航栏和工具栏

Posted

技术标签:

【中文标题】iOS 7 UITableView 使用透明的导航栏和工具栏【英文标题】:iOS 7 UITableView using transparent Navigation bar and toolbar 【发布时间】:2013-09-24 20:10:54 【问题描述】:

就像 Facebook / Venmo 应用程序一样,如何设置 UITableView 以便内容将在半透明导航栏和底部工具栏下滚动,但您仍然可以滚动到顶部和底部而不会被导航或工具栏遮挡?

谢谢!

【问题讨论】:

【参考方案1】:

我假设你想构建一个 ios7 应用程序。

通常,当您使用新的 SDK 构建时,这会自动完成。

例如,您将 UITableViewUIScrollView 设置为 Autolayouts(扩展到视图控制器视图的整个高度)。

UIViewControllers 在 iOS 7 中有一个名为 edgesForExtendedLayout 的新属性。这里的默认值为UIRectEdgeAll,表示控制器将其内容扩展到所有边缘。如果您的视图控制器嵌套在UINavigationControllerUITabBarController 中,那么它会自动设置内容插入,因此您可以滚动到顶部和底部并查看所有项目(或单元格或其他)。 然后,当您将内容滚动到屏幕外时,您可以看到新的 iOS7 条形模糊效果。

请记住,要将其他 UI 元素定位在导航栏下方,以便它们保持可见且不与导航栏重叠,您应该阅读 topLayoutGuidebottomLayoutGuide 的文档。来自文档:

“[...] 表示您不希望出现在半透明或透明 UIKit 栏(例如状态或导航栏)后面的内容的最高垂直范围。[...]”

TopLayoutGuide

BottomLayoutGuide

【讨论】:

它不会自动调整。我查看了 VC 的 Hiearchy,似乎没有 UINav 或 UIToolbar 嵌套在 Table VC 中。列表中应该有一个吗? UINavigation 栏来自导航控制器。 你是对的。它会自动补偿。但是,如果您要从 ios7 之前的应用程序移植您的应用程序,则在对 tableview 的插图进行任何修改时需要小心。我正在修改我的下拉刷新的表格视图的插图,这导致表格视图的插图设置为零。它现在需要考虑导航栏的高度。

以上是关于iOS 7 UITableView 使用透明的导航栏和工具栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 中 UITableView 的 contentInset 规则?

iOS 7中UITableView的半透明效果[关闭]

如何在 iOS 7 中制作完全透明的导航栏

在 ios 7 中制作透明导航栏和透明标签栏。

iOS 7 半透明标签栏和导航栏

无法使 UITableView 出现在半透明导航栏下