2017-10-04 34 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,直到你明白什麼他們是這樣。