【发布时间】:2018-01-07 20:31:37
【问题描述】:
我有一个UITableViewCell,里面只包含一个标签。标签被限制在单元格的所有边距(顶部、底部、尾随和前导)。它是一个多行标签 (lines = 0) 并且有一些静态文本,它将在 iPhone X 的屏幕上以横向和纵向占据多行。
这是 IB 的 screenshot,带有约束条件。
代码中的行数设置为 30。(足够的单元格始终占据屏幕)
我已经在一个新项目中实现了上述所有内容。大部分是在 IB 上完成的,UITableViewController 子类只包含两个方法,numberOfRowsInSection 和 cellForRowAt indexPath。该项目是在 Xcode 9 上使用 Swift 4 创建的,并且设备在 iOS 11.2 上运行。
这是UITableViewController 子类的代码
class ViewController: UITableViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 30
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
return cell
}
}
VC 首次启动时,所有单元格的大小都已正确调整。在将设备旋转为横向时,单元格会按预期调整大小。现在,当我将设备转回纵向时,单元格占据的高度超出了应有的高度。
这只发生在 iPhone X 上。这些单元格在所有其他 iPhone 上都按预期布局。
此外,我的任何旧项目(使用 Xcode 8 创建)都不会发生这种情况。
After rotating to landscape and back
我一直在尝试复制旧项目中的所有属性,但它的大小仍然不正确。
任何意见将不胜感激... 谢谢!
编辑:
正如 Brandon 所指出的,它只发生在 UITableViewController 嵌入到 UINavigationController 中时。嵌入在UINavigationController 中的UIViewController 中的UITableView 显示了正确的行为。 UITableViewController 在UINavigationController 之外的行为也符合预期。
【问题讨论】:
-
没有代码,没有答案..我们无法猜测您的代码中发生了什么..至少提供一个示例,以便我们可以重现该问题。
-
我已经添加了 IB 的截图和代码。这应该为您提供足够的信息来重新创建我所面临的。
标签: ios iphone ios11 xcode9 iphone-x