如何返回正确的高度ForRowAtIndexPath

问题描述:

现在我正在尝试适应两个新的iPhone 6/Plus。我正在使用UITableViewController来实现我的表。如何返回正确的高度ForRowAtIndexPath

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

我得到它的动态和大小的图像会有所不同,所以我无法控制图像的大小。通过使用约束条件,我可以将图像调整到整个单元格。但我觉得在iPhone 6 Plus中,电池的高度至少要高出20px。

有没有什么办法可以检测到它的iPhone 6 Plus/6,并在heightForRowAtIndexPath方法覆盖返回的高度? O也许应该为iPhone 6/Plus使用不同的StoryBoard?

请指教。

谢谢

你可以根据屏幕高度检测它是什么手机。这些是iPhone 4和iPhone 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点,iPhone 5的高度为568点,iPhone 6的高度为667点,6点的高度为736点。

您可以通过[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; 
} 

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

希望这会有所帮助!

+0

第一个选项就像一个魅力! 谢谢 – outime 2014-10-07 01:14:45