2016-06-20 1 views
0

Итак, в настоящее время у меня есть ячейка UITableView, и у меня есть несколько кнопок, этикеток и UIImageView, высота установлена ​​на 400, которая является постоянной.Как установить размеры UIImageView разных размеров для разных устройств в UITableViewCell?

Единственное, при работе на небольших устройствах, таких как 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

Смежные вопросы