2013-05-07 71 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 2013-05-07 07:17:43

+0

不,我还没有添加飞溅图像 – 2013-05-07 07:18:24

+0

是你的应用程序通用? – Nameet 2013-05-07 07:18:34

回答

2

使用此功能来检查:

012在您的项目也
#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]? – 2015-10-30 04:40:32

1

您的代码不为以下原因

1)如果旋转装置一个工作,请检查您的主屏幕边界。这可能会导致混淆。你可以尝试更好的方式来使用它。

2)建筑物使用的Xcode 4.5和iOS 6的SDK

3)程序的时候当你问一个UIScreen它这Default-568h.png只被允许的界限,你得到的画面,这是整个设备的边界屏幕。 (状态栏是屏幕的一部分)

所以它可能得到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此版为,正如你所知道的高度唯一的区别,因此,通过高度的框架在两个条件:

这里是一个宏:

#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:for UIViews和viewDidAppear for UIViewControllers来解决此问题。

所以如果你使用正确的自动尺寸面具,那么你可能不会让你的看法更长: Autoresizing masks programmatically vs Interface Builder/xib/nib