2013-04-06 1 views
3

Я хочу увеличить размер пользовательской кнопки, если пользователь использует iPhone 5.Кнопка с различной шириной на iPhone 5

Это то, что у меня в файле .m

//.m File 
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    CGSize result = [[UIScreen mainScreen] bounds].size; 
    if(result.height == 480) 
    { 
     int varWidth = 228; 
    } 
    if(result.height == 568) 
    { 
     int varWidth = 272; 
    } 
} 

.... 

[newButton setFrame:CGRectMake(8.0, 40.0, 228, 80.0)]; 

Но я хочу что-то вроде этого:

[newButton setFrame:CGRectMake(8.0, 40.0, varWidth, 80.0)]; 

ответ

4

Вы используете varWidth из его области видимости.

int varWidth; 

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    CGSize result = [[UIScreen mainScreen] bounds].size; 
    if(result.height == 480) 
    { 
     varWidth = 228; 
    } 
    if(result.height == 568) 
    { 
     varWidth = 272; 
    } 
} 

.... 

[newButton setFrame:CGRectMake(8.0, 40.0, varWidth, 80.0)]; 
+0

В этом случае ширина кнопки всегда будет 228, но я хочу, чтобы это было 272, если пользователи имеют iPhone 5 – Berendschot

+0

@ Maarten1909 это была опечатка. Я отредактировал свой ответ. –

+1

Whoo !! Вы решили мой вопрос, но обратите внимание, что varWidth должен заканчиваться на '.0' – Berendschot

2
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    CGSize result = [[UIScreen mainScreen] bounds].size; 
    if(result.height == 480) 
    { 
     [newButton setFrame:CGRectMake(8.0, 40.0, 228.0, 80.0)]; 
    } 
    if(result.height == 568) 
    { 
     [newButton setFrame:CGRectMake(8.0, 40.0, 272, 80.0)]; 
    } 
} 

Почему бы не сделать так?

Еще одно предложение:

Использование #define.

Например:

#define iPhone5width 272 
#define iPhone4width 228 

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    CGSize result = [[UIScreen mainScreen] bounds].size; 
    if(result.height == 480) 
    { 
     [newButton setFrame:CGRectMake(8.0, 40.0, iPhone4width, 80.0)]; 
    } 
    if(result.height == 568) 
    { 
     [newButton setFrame:CGRectMake(8.0, 40.0, iPhone5width, 80.0)]; 
    } 
} 
+0

Потому что у меня более одной кнопки, и этот способ работает, но мой код станет очень грязным. – Berendschot

+0

взгляните на отредактированный код ... таким образом, вы можете добавить больше кнопок, и если вам нужно изменить ширину, вам нужно отредактировать только одно место, #define – lakesh

+0

Тем не менее, если есть 10 кнопок, это означает наличие 20 'setFrame:' ​​строк вместо 10 или 30, если есть отдельный раздел для iPads ... И для изменения позиции кнопки требуется редактируя каждый 'setFrame:' ​​вызов для кнопки отдельно. – Arkku

1

Лучшее и Короткий путь, для проверки устройства iPhone 5 or iPhone5 < (Less Then). Для этого вам необходимо написать следующий код в файле проекта .pch.

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

Это как устройство проверки, это iPhone5 или нет.

И вам нужно написать только одно условие для управления его

if(IS_IPHONE_5) 
     // set or put code related to iPhone 5. 
else 
     // set or put code related to less then iPhone 5.