为啥我在推送一些 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(模态和推送)