2

ios6 と ios7 で異なるストーリーボードを使用することにしたので、コードでストーリーボードをインスタンス化する必要があります。アプリのデリゲートにこのメソッドがあります- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

iPadStoryboardiPadシミュレーターで実行すると、名前が付けられたストーリーボードが常にインスタンス化されるだけです.info.plistからメインインターフェイスを削除しました。ここで何が起こっているか分かりますか?

- (void)loadStoryboards
{
    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    UIStoryboard *mainStoryboard = nil;
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))

        NSLog(@"1");
        if (iOSDeviceScreenSize.height == 480)
        {
            mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone-ios5" bundle:nil];
        } else {
            NSLog(@"loading iPad storyboard");
            mainStoryboard = [UIStoryboard storyboardWithName:@"iPadStoryboardOS6" bundle:nil];
        }

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))

        NSLog(@"2");
        if (iOSDeviceScreenSize.height == 480)
        {

            mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
        } else {
            mainStoryboard = [UIStoryboard storyboardWithName:@"iPadStoryboard" bundle:nil];
        }


    self.initialViewController = [mainStoryboard instantiateInitialViewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = self.initialViewController;
    [self.window makeKeyAndVisible];
}
4

1 に答える 1

1

iPad の確認方法に注意してください。480px の画面高さは iPhone5 をカバーしません。使用する:

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
于 2013-09-17T07:11:12.177 に答える