ios UITableViewController重叠状态栏[重复]
Posted
技术标签:
【中文标题】ios UITableViewController重叠状态栏[重复]【英文标题】:ios UITableViewController overlapping status bar [duplicate] 【发布时间】:2015-05-15 20:36:00 【问题描述】:我有一个简单的选项卡式应用程序,它的第一个选项卡是UITableViewController
。填充一些数据后,我注意到表格视图的顶部与状态栏重叠。
我试过搞乱edgesForExtendedLayout
和类似的设置,但没有找到神奇的组合。有谁知道如何纠正这个问题?
重现步骤:
-
创建一个新的选项卡式应用程序
删除第一个标签
UIViewController
并将其替换为 UITableViewController
用一些数据填充UITableView
运行应用程序
以下是设置和问题的几个屏幕截图:
【问题讨论】:
【参考方案1】:只需修改表格视图的contentInset
属性,它可以在您的内容周围添加一些填充。在viewDidLoad()
中添加以下内容:
tableView.contentInset.top = 20
在Objective-C中,你不能直接赋值给顶部,所以这样做:
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
当然可以是任意值,这里是状态栏的高度。
【讨论】:
谢谢。我很惊讶这不是默认设置。 (Apple 应该检查状态栏并进行相应设置。)我选择了tableView.contentInset.top = UIApplication.sharedApplication().statusBarFrame.height
,因为我不喜欢幻数:)
你是对的。 ;) 这里的原因是(从 ios 7 开始)默认情况下,视图会将其边缘扩展到全屏。如果您将视图嵌入到导航控制器中,您会看到导航栏被自动考虑在内(称为“顶部布局指南”)。
这对我来说并不是那么好用。仍然没有支持视图,所以我无法在那里设置我想要的特定颜色,无论如何滚动表格视图,内容仍然与状态内容重叠..
我不知道怎么做,但我以前试过这个,当时它不起作用,不是很好。
设置 contentInset 不适用于我在 iOS 11. iPhone 8 中的情况。还有其他方式吗?滚动表格内容时进入状态栏下方。【参考方案2】:
根据 cmets 的建议,一种方法是(在 Swift 3 中):
override func viewDidLoad()
super.viewDidLoad()
tableView.contentInset.top = UIApplication.shared.statusBarFrame.height
但这并不那么干净。最好embed the UITableViewController in a UINavigationController(编辑器>嵌入>导航控制器)并取消选中检查器中的“显示导航栏”。无需调整!
【讨论】:
以上是关于ios UITableViewController重叠状态栏[重复]的主要内容,如果未能解决你的问题,请参考以下文章
IOS 教你玩转UITableViewController和TableView
iOS 15 上 UITableViewController 的便捷初始化崩溃
iOS 7 用 UIPickerView 打开 UITableViewController 很慢
UITableViewController 中的 iOS tableHeaderView 从不显示