如何在UITableViewCell中为不同的设备设置UIImageView高度不同的大小?

时间:2016-06-20 09:29:04

标签: objective-c uitableview uiimageview

所以目前我有一个UITableView单元格,我有一些按钮,标签和UIImageView,高度设置为400,这是恒定的。

唯一的问题是,在iPhone 4和5 / SE等小型设备上运行时,图像上方和下方的间隙(背景)会更大。

我知道我需要像这样设置高度:

6 Plus - 386

6 - 347

4/5/SE - 292

如果可能,我如何在故事板中实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果您想在故事板中执行此操作,则需要使用AutoLayout进行学习。如果您不想学习它,您可以通过一些条件以编程方式(不推荐)对您的大小进行硬编码,这里是如何做的。

首先,将这些宏添加到您的代码中:

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)

#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))

#define IS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)
#define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)
#define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
#define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)

然后,使用它:

if (IS_IPHONE_5 || IS_IPHONE_4_OR_LESS) {
    //size is 292
} else if (IS_IPHONE_6) {
    //size is 347
} else if (IS_IPHONE_6P) {
    //size is 386
}

希望这有帮助。