如何返回正确的heightForRowAtIndexPath

时间:2014-10-06 22:14:29

标签: objective-c iphone xcode uitableview ios8

现在我正在努力适应两款全新的iPhone 6 / Plus。我正在使用UITableViewController来实现我的表。

在我的Cell中,我有一个320x189的UImageView,几乎使用了整个单元格,并充当每个单元格的背景。

我的动态图像和尺寸会有所不同,因此我无法控制图像的大小。通过使用约束,我能够通过整个单元调整图像。但我觉得使用iPhone 6 Plus时,单元的高度应该至少高出20px。

有什么方法可以检测到它的iPhone 6 Plus / 6并且在heightForRowAtIndexPath方法上覆盖返回的高度?我可能应该为iPhone 6 / Plus使用不同的StoryBoard吗?

请建议。

由于

1 个答案:

答案 0 :(得分:1)

您可以根据屏幕高度检测手机。这些是iPhone 4和5的屏幕尺寸:http://www.idev101.com/code/User_Interface/sizes.html,这些是iPhone 6/6 +的调光:http://www.paintcodeapp.com/news/iphone-6-screens-demystified

iPhone 4的高度为480 pts,iPhone 5的高度为568 pts,iPhone 6的高度为667 pts,6 +的高度为736 pts。

您可以使用[UIScreen mainScreen].bounds.size.height获取设备屏幕的高度。

所以你可以告诉你正在使用什么类型的手机:

CGFloat h = [UIScreen mainScreen].bounds.size.height;
if (h > 700){
    NSLog(@"iPhone 6+");
}
else if (h > 600){
    NSLog(@"iPhone 6");
}
else if (h > 500){
    NSLog(@"iPhone 5");
}
else{
    NSLog(@"iPhone 4");
}

对于表格单元格的高度,您可以通过编程方式将高度设置为heightForRowAtIndexPath方法中图像大小的高度。如果你的图像有某种阵列,你可以这样做:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return images[indexPath.row].size.height;
}

应调整每个单元格的高度以适合其对应的图像。

希望这有帮助!