2014-10-17 20 views
1

我有一個UITableView在我的一個視圖。我一直在iPhone 4S上測試這款應用程序,並且它一直在努力工作。現在我試着在iPhone 5S上測試它(它有一個更高的屏幕)。 UITableView不適合底部。我知道這與自動佈局有關但我不知道如何設置。UITableView高度不適合容器垂直(底部)爲不同的iPhone設備

浮現在我的腦海裏的兩種方法是:

1)編程方式確定屏幕的高度,然後以編程設定的UITableView高度以配合屏幕 2-)在Interface Builder中使用自動佈局。但我收到警告說AutoLayout只適用於iOS 8及更高版本。那麼,我將如何實現iOS的較低版本呢?

所以我的問題是:如何動態設置UITableView的高度,使其適合屏幕的底部,而不管iPhone屏幕的高度如何?

感謝您的任何幫助。

+1

自動佈局可從iOS 6的開始。對屏幕尺寸進行硬編碼是一個可怕的想法,因爲它不能在不同設備屏幕尺寸(iPhone 5,iPhone 6,iPhone 6+和各種iPad)之間移植。使用自動佈局。 – 2014-10-17 23:00:53

+0

好的,謝謝,我會研究它。你推薦一個教程嗎? – Pacemaker 2014-10-18 13:44:37

+1

嗯...個人我剛剛看過免費的WWDC視頻(每個WWDC自2012年以來都有某種自動佈局視頻),但我從未遵循過教程。我知道iTunesU中的「爲iPhone和iPad開發iOS 7應用程序」也涵蓋了自動佈局,還有Ray Wenderlich教程(http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in- IOS -7-部分-1)。請注意,在iOS 7和iOS 8中增強自動佈局方面發生了一些小的變化。由於iOS 8故事板較大的變化,請先檢查WWDC 2014視頻的佈局UI。 – 2014-10-18 14:28:44

回答

0

您可以爲不同的屏幕大小設置不同的tableview。 .m文件的

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

這在viewDidLoad中定義()這個定義標題方法

if (IS_IPHONE_5) { 
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0, 320, 568)]; 
}else{ 
     // define for 3.5 inch screen 
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0, 320, 480)]; 
} 

我希望這將有助於..

+0

謝謝。說得通。 – Pacemaker 2014-10-17 16:33:22

+0

這不會爲iPhone 6,iPhone 6+和所有iPad設置正確的尺寸。改爲使用自動佈局。 – 2014-10-17 23:01:52

+0

我覺得有義務將其作爲正確答案刪除。正如@RoboticCat所提到的。硬編碼這些東西似乎不合邏輯,因爲我們可以使用自動佈局。謝謝你的努力。 – Pacemaker 2014-10-19 13:42:30

相關問題