2016-06-20 84 views
0

所以目前我有一个UITableView单元格,并且我有一些按钮,标签和UIImageView,高度设置为400,这是恒定的。如何为UITableViewCell中的不同设备设置UIImageView高度不同的大小?

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

我知道我需要设置的高度,象这样:

6 Plus - 386 

6 - 347 

4/5/SE - 292 

哪能如果可能的话在故事板实现这一目标。

回答

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 
} 

希望这有助于。

+0

我实际上已经有了自动布局设置,而且我在想,不是硬编码imageView高度,只是使用像'heightForRowAtIndex'内部提示的条件。你怎么看? – Prgmmr

+0

事实上,如果你已经正确地设置了自动布局,使用条件设置'heightForRowAtIndex'应该可以正常工作:) – AnthoPak

+0

我将如何添加if语句。无法弄清楚我应该怎么做。因为从技术上讲,if语句会达到非空函数 – Prgmmr

相关问题