2013-05-07 45 views
2

Я устанавливаю мою iphone рамку экрана приложения для поддержки Iphone 5, я поставил маску автоматического изменения размера mask, а также я попытался, установив рамку программно, используя следующий код в loadviewКак установить размер кадра для Iphone 5

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    { 
     CGSize result = [[UIScreen mainScreen] bounds].size; 
     if(result.height == 480) 
     { 
      // iPhone Classic 
     } 
     if(result.height > 480) 
     { 
      // iPhone 5 
      CGRect mainFrame = CGRectMake(0, 0, 320, 568); 
      self.view.frame = mainFrame; 
     } 
    } 

, но оно не работает didn't work,

может любой сказать мне, как я могу установить рамку, Thanx заранее

+0

у вас есть [email protected] в проекте? – sheraza

+0

НЕТ, я не добавил всплеск image –

+0

Ваше приложение универсальное? – Nameet

ответ

2

Используйте это, чтобы проверить:

#define IS_IPHONE ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"]) 
#define IS_HEIGHT_GTE_568 [[UIScreen mainScreen ] bounds].size.height >= 568.0f 
#define IS_IPHONE_5 (IS_IPHONE && IS_HEIGHT_GTE_568) 
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 

Так

if(IS_IPHONE_5) 
{ 
// Iphone 5 frame 
} 
else 
{ 
// iphone 4 frame 

} 

и добавить [email protected] в проекте также.

Надеюсь, это поможет вам.

+0

Как добавить [email protected] в мой проект? –

1

Ваш код не работает на одной из ниже причин

1) При повороте устройства, проверьте основной экран оценку. Это может привести к путанице. Вы можете попробовать Лучше использовать его.

2) Это Default-568h.png разрешено только при создании приложения с помощью Xcode 4.5 и IOS 6 SDK

3) Когда вы просите UIScreen за это Bounds вы получаете за пределы экрана, что все устройство экран. (строка состояния является частью экрана)

Таким образом, он может получить false два if условий.

Вы можете использовать этот код ..

-(BOOL)isDeviceGreaterThaniPhone5 
{ 
    struct utsname systemInfo; 
    uname(&systemInfo); 

    NSString *modelName = [NSString stringWithCString:systemInfo.machine 
              encoding:NSUTF8StringEncoding]; 
    if([modelName isEqualToString:@"iPhone5,1"]) {// @"iPhone 5 (GSM)"; 
     return YES; 
    } 
    else if([modelName isEqualToString:@"iPhone5,2"]) {// @"iPhone 5 (GSM+CDMA)"; 
     return YES; 
    } 
    else if([modelName isEqualToString:@"iPod5,1"]){ // @"iPod touch 5G"; 
     return YES; 
    } 
    return NO; 
} 

Не забудьте импортировать #import <sys/utsname.h>

1

попробовать, как это,

if ([[UIScreen mainScreen] bounds].size.height == 568) { 

//iphone5 frame 

} 
else{ 
//not an iphone5 frame 
} 

Подробности check this one

0

Ответ Nishant отлично, вот я просто предоставляю consized v ersion этого, как вы знаете, высота только разница, следовательно, проходит по высоте для вашего кадра в обоих случаях:

Вот макрос:

#define ASSET_BY_SCREEN_HEIGHT(regular, longScreen) (([[UIScreen mainScreen] bounds].size.height <= 480.0) ? regular : longScreen) 

И вот как его использовать:

CGRect frame = CGRectMake(0, 0, 320, ASSET_BY_SCREEN_HEIGHT(460, 548)); 
0

Это не работает, потому что вы должны добавить свое представление в качестве подсмотра и подождать, пока оно не будет нарисовано.

Для моего проекта я решил это, поставив код, который зависит от размера экрана после авторазбора в drawRect: для UIViews и в viewDidAppear для UIViewControllers.

Так что, если вы используете правильную маску, то вы автоматическое изменение не можете сделать ваш взгляд больше: Autoresizing masks programmatically vs Interface Builder/xib/nib

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