您可以通過檢測iPhone類型(如#2)來執行代碼,或者如果您使用佈局約束,則可以在代碼中添加一個將表視圖的高度與屏幕高度關聯的約束。表格視圖的高度可以用屏幕高度乘以乘數加常數來表示,所以如果求解這兩個等式,您將得到乘數和常數的值,這些值將起作用:
568 *乘數+常數= 363和480 *乘數+常數= 297
如果你工作了這一點,它給你乘數= 0.75和常數= -63.0115
所以我使用的代碼看起來是這樣的。我在表格視圖中計算用於填充填充的常量(我根據經驗確定)添加了10的模糊因子。我在IB中創建了一個高度約束,併爲它創建了一個IBOutlet - 它的值是什麼並不重要,因爲我立即在viewDidLoad中刪除它(它在IB中是必需的,所以約束就足夠了)。
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.theData = @[@"One",@"Two",@"Three",@"Four",@"Five",@"Six",@"Seven",@"Eight",@"Nine",@"Ten",@"Eleven",@"Twelve"];
[self.tableView reloadData];
[self.tableView removeConstraint:self.tableHeight];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeHeight relatedBy:0 toItem:self.view attribute:NSLayoutAttributeHeight multiplier:0.75 constant:-63.0115 + 10]];
}
他正在使用彈簧,你建議AutoLayout –
@DuricanRadu,是的,無論是或者像他的第2號建議一樣的代碼。沒有辦法用彈簧做他想做的事。 – rdelmar
感謝rdelmar,我已經打開了自動佈局,它沒有破壞我的應用程序,所以我會去 - 在上面的代碼中,雖然倒數第二行中的self.tableheight導致未找到屬性的構建失敗? – Knightsy