2017-10-04 90 views
0

我真的很沮丧,因为我刚刚发布了这个应用程序到App Store,现在我已经更新到Xcode 9,我有一个tableview现在有问题。在iOS 10中,旧的tableview将单元格放置在tableview顶部下方100个坐标处,这样我就可以在tableview上添加标签和东西,单元格从它们下面开始,但可以在它们下方滚动。但是现在,当我在ios11模拟器上运行应用程序时,它将摆脱tableview标题,但是当我在自己的手机上运行它时,它不会。我没有设置任何代码确定的tableview的头,这是我当前的代码:Xcode 9 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中的桌面视图,而不是模拟器

+0

非常令人困惑的是如何提及Xcode 9和iOS 10以及iOS 11和“我自己的手机”。你是说当你在Xcode 8中构建它时,它可以在iOS 10和iOS 11上工作,但是当你使用Xcode 9构建它时,它只能在iOS 10上而不在iOS 11上工作?无论哪种方式,在决定tableView的位置时,您都不应*只使用'myTableView.frame = ...'。您应该使用约束条件,或让故事板为您使用自动布局。当通过代码完成时,你不知道不同的屏幕尺寸会做什么。我的猜测是,新的'safeArea'东西正在移动你的东西,但很难说这个不清楚的问题。 – Sti

回答

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) 
} 

这是非常糟糕的编码来处理像你一样的大小。你应该在tableView上面创建一个tableHeader或者约束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,直到你明白什么他们是这样。