在 Interface Builder 中创建的 Table View Controller 的底部单元格在 iPhone X 上被剪裁和隐藏

Posted

技术标签:

【中文标题】在 Interface Builder 中创建的 Table View Controller 的底部单元格在 iPhone X 上被剪裁和隐藏【英文标题】:Table View Controllers created in Interface Builder have their bottom cells clipped and obscured on iPhone X 【发布时间】:2017-11-06 02:30:35 【问题描述】:

如果 Table View Controller 是使用 Interface Builder 创建的,则在 iPhone X 上,最低可见单元格将被主屏幕指示器遮挡,并且单元格的角被弯曲的屏幕剪裁,默认情况下 - 请参见下面的屏幕截图。

如果我使用视图控制器并插入表格视图,然后手动设置它,我可以使用底部布局指南和表格视图,以确保不会发生这种模糊和剪切行为,即不允许表格视图延伸到屏幕的弯曲部分。

我正在升级一些旧版应用程序,如果可能的话,我不希望将现有的表视图控制器转换为视图控制器。如何使使用 Interface Builder 创建的表视图控制器正常运行?

According to the Apple docs, by using the standard interface elements this shouldn't be a problem.

插入基本内容以防止剪辑。一般来说,内容 应该居中并对称插入,因此在任何情况下看起来都很棒 方向并且不会被角落或设备的传感器夹住 外壳,或被用于访问主屏幕的指示灯遮挡。 为获得最佳效果,请使用标准的、系统提供的界面元素和 自动布局来构建您的界面。所有应用程序都应遵守 UIKit 定义的安全区域和布局边距,确保 根据设备和上下文进行适当的插入。

【问题讨论】:

您查看过安全区域指南吗? developer.apple.com/documentation/uikit/uiview/… 我看过了,但没有找到任何有用的东西。你能说得更具体点吗? 【参考方案1】:

如果您启用automaticallyAdjustsScrollViewInsets,当您滚动到底部时,表格视图将显示在主页指示器上。我想这就是苹果想要的,利用全屏的同时每个元素都可以交互。 如果您希望单元格永远不会在UITableViewController 中被遮盖或剪裁。我建议你使用普通样式的表格视图,设置contentInset 使节页脚悬停在主页指示器下方。我试过这个,它有效,但看起来很难看。像这样:

【讨论】:

从我链接到的文档中,我认为他们不想剪掉最后一行。编辑了我的问题并添加了相关报价。 @NicholasGresham 实际上很多应用都在首页指示器下扩展,例如 iMessage。我认为对于只有一个没有标签栏的列表的视图来说,这是一个解决方案。 哦,真的吗?谢谢,我会做更多的调查。我还没有机会看到真正的设备。【参考方案2】:

最后,我将 Table View Controllers 转换为 View Controllers,并为 Table View 添加了底部对齐约束

【讨论】:

以上是关于在 Interface Builder 中创建的 Table View Controller 的底部单元格在 iPhone X 上被剪裁和隐藏的主要内容,如果未能解决你的问题,请参考以下文章

无法关闭在 Interface Builder 中创建的 NSView 实例的剪辑

如何在具有自动布局的 Interface Builder 中创建的现有视图中添加视图?

在 iOS 中,在 Interface Builder 中创建的视图是不是将选项 TranslatesAutoResizingMaskIntoConstraints 设置为 false?

在 Interface Builder 中创建的 Table View Controller 的底部单元格在 iPhone X 上被剪裁和隐藏

iOS 开发 - 如何使用自定义 Table View Controller 显示在 Interface Builder 中创建的静态单元格?

如何在 Interface Builder 中创建 NSToggleButton?