我真的很沮丧,因为我刚刚将这个应用程序发布到App Store,现在我已经更新到Xcode 9,我的桌面视图现在遇到了问题。在iOS 10中,旧的tableview将单元格放置在tableview顶部下方的100个坐标附近,因此我能够在tableview上方添加标签和内容,单元格从它们下方开始,但随后可以在它们下面滚动。但是现在当我在ios11模拟器上运行应用程序时,它摆脱了tableview标题,但是当我在自己的手机上运行它时,却没有。我没有设置任何代码来确定tableview的标题,这是我当前的代码:
myTableView.frame = CGRect(x: 0, y: 110, width: self.view.frame.width, height: self.view.frame.height - 140)
是一张帮助想象它的照片: https://imgur.com/a/I4iMo
我需要让tableview等同于iPhone 6s中的tableview而不是模拟器
答案 0 :(得分:0)
尝试将确切的代码行放在viewDidLayoutSubviews
。
将它放在ViewController中。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
myTableView.frame = CGRect(x: 0, y: 110, width: self.view.frame.width, height: self.view.frame.height - 140)
}
像你一样处理不变大小的编码很差。您应该创建一个tableHeader,或者约束tableView上方的UIView
- 其中UIView的高度基于其内容的大小。
在您的代码中,如果用户在辅助功能中打开更大的字体会发生什么?文本可能会超出您的100pt视图..
如果我的代码不起作用,请尝试使用一些新的safeArea变量,例如:
myTableView.frame = CGRect(x: 0, y: 110+self.view.safeAreaInsets.top, width: self.view.frame.width, height: self.view.frame.height - 140)
使用safeAreaInsets
,直到您了解他们的行为为止。