为啥我在推送一些 ViewControllers 后获取 tableView 的空间顶部?

Posted

技术标签:

【中文标题】为啥我在推送一些 ViewControllers 后获取 tableView 的空间顶部?【英文标题】:Why i Get Space top of the tableView after push some ViewControllers?为什么我在推送一些 ViewControllers 后获取 tableView 的空间顶部? 【发布时间】:2017-12-22 11:28:02 【问题描述】:

这个屏幕是“C”视图控制器,它有 second.Storyboard

这个屏幕在按下“A”视图控制器后获得了表格顶部的空间,它有 Main.Storyboard

相同的 Viewcontroller 和相同的代码,但从“B”ViewController 推送它具有 Main.Storyboard。

【问题讨论】:

什么空间?什么是“C”? "C" 被赋予图像 ViewController 和空间是你在单元格上方看到紫色 您能告诉我们您在 Interface builder 中的自动布局设置吗? 【参考方案1】:

尝试取消选中视图控制器的Adjust scroll View Insert属性

【讨论】:

我也这样做。【参考方案2】:

将 tableView 的顶部约束拖动为 IBOutlet 并执行此操作

 override func viewDidLayoutSubviews
 

    self.tableviewTopCon.constant = 0

    self.layoutSubviews()

 

【讨论】:

"self.tableviewTopCon.constant = 0" 什么是 tableviewTopCon? 这是从情节提要中作为 IBOutlet 拖动的 tableview 的顶部约束,以控制它在运行时的常量值 哦,我明白了。谢谢。【参考方案3】:

尝试链接内容插图。

self.tableView.contentInset = UIEdgeInsetsMake(-36, 0, 0, 0)

【讨论】:

如果我尝试使用您的代码,但是当我从“B”视图控制器推送时,它将需要 -36 表示它将剪切单元格。 这是完全错误的。您认为 Apple 会希望您将某些东西设置为开箱即用的负值吗?即使这可行,它也将是黑客攻击。这可能是由错误的自动布局引起的。 可能是。我发现 tableview 从滚动视图继承内容插图。我用这个修复了我的视图。如果它是黑客,请纠正我,我也会申请并记住它。

以上是关于为啥我在推送一些 ViewControllers 后获取 tableView 的空间顶部?的主要内容,如果未能解决你的问题,请参考以下文章

[iOS Swift4]如何支持 ViewControllers(模态和推送)

将相同的 UITableView 添加到不同的 ViewControllers

推送视图控制器后如何保留 UITabBar

为啥我在 Swift5 中收不到推送消息?

CALayer - 暗影导致性能下降?

为啥我在 Swift 中没有收到来自 Firebase 的推送通知?