2013-04-26 106 views
0

我使用需要被允许,以适应iPhone 5的屏幕,但是我似乎无法得到正确的布局视图帮助,我已经尝试了这一点;与iPhone 5视图布局

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
     if (IS_IPHONE5) { 
      NSLog(@"iPhone 5"); 

      [SelectionPhotoOptionView setFrame:CGRectMake(470, 0, 640, 568)]; 
      [SelectionButView setFrame:CGRectMake(0, 0, 640, 568)]; 
      [imageViewSelection setFrame:CGRectMake(0, 0, 640, 568)]; 
      [imageViewPhotoOption setFrame:CGRectMake(-470, 0, 640, 568)]; 
      ButtonYpos=612; 

     } else { 

      NSLog(@"iPhone 4 and Lower"); 

     [SelectionPhotoOptionView setFrame:CGRectMake(470, 0, 320, 480)]; 
     [SelectionButView setFrame:CGRectMake(0, 0, 320, 480)]; 
     [imageViewSelection setFrame:CGRectMake(0, 0, 320, 480)]; 
     [imageViewPhotoOption setFrame:CGRectMake(-470, 0, 320, 480)]; 
     ButtonYpos=412; 
    } 

顶部是错误的,iPhone 5是不是制定了正确的,我不知道是否有人能帮助我了一个更简洁的代码示例使用?

谢谢, 克里斯

回答

1

您可以检查您设备的分辨率是iPhone 5使用

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

那么你可以用下面的代码替换代码中设置框架(4英寸)或更低分辨率(3.5英寸):

if (IS_IPHONE) 
{ 
      [SelectionPhotoOptionView setFrame:CGRectMake(470, 0, 320, IS_IPHONE_5?568:480)]; 
      [SelectionButView setFrame:CGRectMake(0, 0, 320, IS_IPHONE_5?568:480)]; 
      [imageViewSelection setFrame:CGRectMake(0, 0, 320, IS_IPHONE_5?568:480)]; 
      [imageViewPhotoOption setFrame:CGRectMake(-470, 0, 320, IS_IPHONE_5?568:480)]; 
      ButtonYpos=IS_IPHONE_5?612:412; 
} 

注:在iPhone5的情况下,你已经给宽度为640和iPhone 4是320虽然宽度同为这两个设备。所以我在两种情况下都改变了宽度320。

它会为你工作。

0

做检查屏幕高度以下内容:

 screenRect = [UIScreen mainScreen].bounds; 
     screenHeight = screenRect.size.height; 
     if(screenHeight == 568){ 
      NSLog(@"iPhone 5"); 
     } 
     else NSLog (@"iPhone 4s or below"); 

当设置根据屏幕尺寸确保您搞清楚在导航栏,如果你有一个帧(默认大约40px)和状态栏,我相信它是10px。

另外宽度为320像素仍然,操作系统将自动调整为视网膜显示。

0

只需要两个.xib iphone4和iphne5。它很容易,无需设置框架只需推适当的视图/ xib。 像......

//设备兼容性

#define g_IS_IPHONE    ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"]) 
    #define g_IS_IPOD    ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"]) 
    #define g_IS_IPAD    ([[[UIDevice currentDevice] model] isEqualToString:@"iPad"]) 
    #define g_IS_IPHONE_5_SCREEN [[UIScreen mainScreen] bounds].size.height >= 568.0f && [[UIScreen mainScreen] bounds].size.height < 1024.0f 
    #define g_IS_IPHONE_4_SCREEN [[UIScreen mainScreen] bounds].size.height >= 480.0f && [[UIScreen mainScreen] bounds].size.height < 568.0f 

当你推,然后检查屏幕..

if (g_IS_IPHONE_4_SCREEN) { 
      styleDetailObj =[[StyleDetailViewController_iPhone alloc] initWithNibName:@"StyleDetailViewController_iPhone" bundle:nil]; 
    } 
     else if (g_IS_IPHONE_5_SCREEN){ 
      styleDetailObj =[[StyleDetailViewController_iPhone alloc] initWithNibName:@"StyleDetailViewController_iPhone5" bundle:nil]; 
    } 

    [self.navigationController pushViewController:styleDetailObj animated:NO];