2013-05-07 69 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