私は現在、6 つのビューを持つアプリケーションを作成している最中です。各ビューは、デバイスの種類と向きの組み合わせ専用です。意味がわからない場合は、6 つの組み合わせすべてにラベルを付けます。
- iPhone4_(320x480) & ポートレート
- iPhone4_(320x480) & 横向き
- iPhone5_(320x568) & ポートレート
- iPhone5_(320x568) & 横向き
- iPad_(768x1024) & ポートレート
- iPad_(768x1024) & 横向き
このすべての問題を経験するのは少しばかげているように思えますが、この状況では一種の必要です. とにかく、プログラミング ガイドの Apple のソリューションとTheAppCodeBlogにあるオンライン チュートリアルの方法を組み合わせて試してみました。
ViewController.m
-->ViewDidLoad
方法
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
ViewController.m
-->orientationChanged
方法
- (void) orientationChanged:(NSNotification *)object
{
UIDeviceOrientation deviceOrientation = [[object object] orientation];
if (deviceOrientation == UIInterfaceOrientationPortrait && [UIScreen mainScreen].bounds.size.height == 480.0)
{
self.view = self.portrait4View;
}
else if ((deviceOrientation == UIInterfaceOrientationLandscapeLeft) || (deviceOrientation == UIInterfaceOrientationLandscapeRight)) && [UIScreen mainScreen].bounds.size.height == 480.0)
{
self.view = self.landscape4View;
}
else if (deviceOrientation == UIInterfaceOrientationPortrait && [UIScreen mainScreen].bounds.size.height == 568.0)
{
self.view = self.portrait5View;
}
else if ((deviceOrientation == UIInterfaceOrientationLandscapeLeft) || (deviceOrientation == UIInterfaceOrientationLandscapeRight)) && [UIScreen mainScreen].bounds.size.height == 568.0)
{
self.view = self.landscape5View;
}
else if (deviceOrientation == UIInterfaceOrientationPortrait && [UIScreen mainScreen].bounds.size.height == 1024.0)
{
self.view = self.portraitPadView;
}
else
{
self.view = self.landscapePadView;
}
}
各ビューの Interface Builder セットアップ:
次のエラーも表示されExpected identifier
ます。
アップデート
アプリを起動するたびに、黒い画面が表示されます。これが私のAppDelegate.m
見た目です:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568.0) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_Portrait5" bundle:nil];
}
else if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 480.0) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_Portrait4" bundle:nil];
}
else {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_PortraitPad" bundle:nil];
}
}