您可以通过检测 iPhone 类型(如 #2)在代码中执行此操作,或者如果您使用布局约束,您可以在代码中添加一个约束,将表格视图的高度与屏幕的高度相关联。表格视图高度可以表示为屏幕高度乘以乘数加上一个常数,因此如果您求解这两个等式,您将得到有效的乘数和常数值:
568 * 乘数 + 常数 = 363 和 480 * 乘数 + 常数 = 297
如果你解决这个问题,它会给你乘数 = .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]];
}