ユーザーが iPhone 5 の画面を使用しているかどうかをアプリに検出させようとしています。
私は他のビューで次の方法をうまく使用しています。
ボタンを介して、ロードする Xib / ビューを呼び出します
- (IBAction)DemoTapeTwo:(id)sender {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
DemoTapeTwoViewController *Second = [[DemoTapeTwoViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:Second animated:YES completion:NULL];
} else {
DemoTapeTwoViewController *Second = [[DemoTapeTwoViewController alloc] initWithNibName:@"DemoTapeTwoViewController_iPad" bundle:nil];
[self presentViewController:Second animated:YES completion:NULL];
}
私は2つのxibを持っています。
iPhone 5 1 : XViewController_568.xib
iPhone 4 1 : XViewController.xib
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
if ([[ UIScreen mainScreen ] bounds ].size.height == 568 ) {
nibName = [NSString stringWithFormat:@"%@_568", nibName];
}
if (self = [super initWithNibName:nibName bundle:nibBundle]) {
}
return self;
}
この ^ は .m ファイルに入ります
画面が iPhone 5 または iPhone 4 の画面であるかどうかを検出し、それに合わせて Xib を調整する必要があります。
ただし、Xcode のエラーは次のとおりです。
キャッチされていない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。 「(null)_568」という名前のドライブ Gestures.app (loaded)'' 最初のスロー コール スタック:
そのため、何かがうまくいかず、iPhone 4 Xib の元の名前が見つかりません。
誰でも私を助けることができますか?