可能重複:
How to detect iPhone 5 (widescreen devices)?現有的ios項目進行兼容iPhone 5
我已經有它在iPhone 4和iPad正常運行的項目。現在我想讓這個項目與iPhone 5(4英寸)兼容。
我試過使用「使用自動佈局」,但它不工作。
我的Xcode版本是4.5版(4G182)。
我在互聯網上搜索,但無法找到任何線索。
如果有人已經解決了這個問題,那麼請指導我。
可能重複:
How to detect iPhone 5 (widescreen devices)?現有的ios項目進行兼容iPhone 5
我已經有它在iPhone 4和iPad正常運行的項目。現在我想讓這個項目與iPhone 5(4英寸)兼容。
我試過使用「使用自動佈局」,但它不工作。
我的Xcode版本是4.5版(4G182)。
我在互聯網上搜索,但無法找到任何線索。
如果有人已經解決了這個問題,那麼請指導我。
我不會推薦創建一個單獨的xib文件,這是我所做的: 1.添加4英寸啓動屏幕 - 如果您想要使用所有iPhone 5屏幕,則必須使用其他設置。那。 2.如果您使用的是xib文件,只需使用界面構建器將其打開並選擇每個視圖按鈕等,並將其設置爲動態放置(使用標尺選項卡)。注意設置窗口也要拉伸。 3.如果您對視圖進行編碼,請檢查您是否動態設置了位置和大小。
注意「自動佈局」不向下兼容所以它不會在iOS6之前的iOS版本上運行(它只是崩潰)!如果您從頭開始,但對於不太好的舊應用程序,這可能很有用。
您是否嘗試將名爲[email protected]的新啓動映像添加到您的項目中?
在名爲[email protected]的項目中放入了iPhone 5的默認圖像。 之後,iPhone 5模擬器啓動我的應用程序全屏。
根據您的佈局,您可能不需要自動佈局。我可以使用IB中的自動調整設置來解決所有佈局問題。最後它很簡單。我有四個類型的問題:
我在現有項目中採用了這種方式。在下一個項目中,我將檢查自動佈局功能。
最佳, 本傑明
一個可能的解決方案(可能不是最好的一個)是依賴於屏幕尺寸加載不同的.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文件爲同一控制器)
它的幫助,謝謝! – Mikhail