2012-10-05 23 views

回答

3

我不會推薦創建一個單獨的xib文件,這是我所做的: 1.添加4英寸啓動屏幕 - 如果您想要使用所有iPhone 5屏幕,則必須使用其他設置。那。 2.如果您使用的是xib文件,只需使用界面構建器將其打開並選擇每個視圖按鈕等,並將其設置爲動態放置(使用標尺選項卡)。注意設置窗口也要拉伸。 3.如果您對視圖進行編碼,請檢查您是否動態設置了位置和大小。

注意「自動佈局」不向下兼容所以它不會在iOS6之前的iOS版本上運行(它只是崩潰)!如果您從頭開始,但對於不太好的舊應用程序,這可能很有用。

4
  1. 在名爲[email protected]的項目中放入了iPhone 5的默認圖像。 之後,iPhone 5模擬器啓動我的應用程序全屏。

  2. 根據您的佈局,您可能不需要自動佈局。我可以使用IB中的自動調整設置來解決所有佈局問題。最後它很簡單。我有四個類型的問題:

    • 視圖控制器應該是全屏

enter image description here

  • 元素與固定距離頂端

enter image description here

  • 與固定距離元件To的底部

enter image description here

  • 元素與動態距離頂部/底部應與該容器的尺寸來縮放

enter image description here

我在現有項目中採用了這種方式。在下一個項目中,我將檢查自動佈局功能。

最佳, 本傑明

1

一個可能的解決方案(可能不是最好的一個)是依賴於屏幕尺寸加載不同的.xib文件。通過這種方式,您可以節省與以前iOS版本的兼容性(< 6.0)。 您可以添加它選擇合適的.xib文件的類別,而不是initWithNibName:

@implementation UIViewController (iPhone5Support) 

-(id) initAutomaticallyWithNibName:(NSString *)nibNameOrNil orIOS6NibName:(NSString*) IOS6NibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136)); 
    if (isiPhone5==NO) { 
     self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    } else { 
     self = [self initWithNibName:IOS6NibNameOrNil bundle:nibBundleOrNil]; 
     if (self==nil) { NSLog(@" initAutomaticallyWithNibName ERROR - nil for io6 nib name"); } 
    } 
    return self; 
} 
@end 

使用它這樣的:

UIViewController *controller = [[UIViewController alloc] initAutomaticallyWithNibName:@"UIViewControllerXibName" orIOS6NibName:@"UIViewControllerXibName_4inch" bundle:nil]; 

(不要忘記創建2個XIB文件爲同一控制器)