4

iOS プロジェクトで両方のストーリーボードを使用しようとしていますが、適切なストーリーボードに切り替えるコードを取得できません。代わりに、コードはまったく何もしません。スイッチを制御する設定が正しく設定されていないのでしょうか? iPhone 5 以外のデバイスのメイン ストーリーボードは MainStoryboard と呼ばれます。iphone 5 に適したレイアウトは iphone5 と呼ばれます。これはプロジェクトの構成設定の問題である可能性があると考えています。(これは私の appdelegate.m ファイルにあります)。

-(void)initializeStoryBoardBasedOnScreenSize {

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {    // The iOS device = iPhone or iPod Touch


        CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

        if (iOSDeviceScreenSize.height == 480)
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone35
            UIStoryboard *iPhone35Storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

            // Instantiate the initial view controller object from the storyboard
            UIViewController *initialViewController = [iPhone35Storyboard instantiateInitialViewController];

            // Instantiate a UIWindow object and initialize it with the screen size of the iOS device
            self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

            // Set the initial view controller to be the root view controller of the window object
            self.window.rootViewController  = initialViewController;

            // Set the window object to be the key window and show it
            [self.window makeKeyAndVisible];
        }

        if (iOSDeviceScreenSize.height == 568)
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iphone5" bundle:nil];

            // Instantiate the initial view controller object from the storyboard
            UIViewController *initialViewController = [iPhone4Storyboard instantiateInitialViewController];

            // Instantiate a UIWindow object and initialize it with the screen size of the iOS device
            self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

            // Set the initial view controller to be the root view controller of the window object
            self.window.rootViewController  = initialViewController;

            // Set the window object to be the key window and show it
            [self.window makeKeyAndVisible];
        }

    } else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)

    {   // The iOS device = iPad

        UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
        UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        splitViewController.delegate = (id)navigationController.topViewController;

    }
}
4

1 に答える 1

7

iPhone 5 と iPhone 3-4S の画面サイズを処理するために、ストーリーボードを 1 つだけ使用することをお勧めします。

ストーリーボードが開いているとき、下部に 2 つのサイズを切り替えるボタンがあります。どのように表示されるかをリアルタイムで確認できます。

このボタンは、右下隅の [ズームイン % ズームアウト] ボタンの左側にあり、次のように表示されます。

ここに画像の説明を入力

オブジェクトのフレームと位置が画面サイズの変更によってどのように影響を受けるかを処理するには、ビュー内の各オブジェクトの自動サイズ変更プロパティを設定する必要があります。これを行うには、オブジェクトを選択し、右側のインスペクター パネルで、次のようにサイズ インスペクターを選択します。

ここに画像の説明を入力

自動サイズ調整ボックスに赤い線が表示されていますか? それらをいじって、オブジェクトにどのように影響するかを確認してください。内側のものはサイズ (幅または高さが伸びる場合) に関連し、外側のものは位置に関連します。

アプリのレイアウトについてはわかりませんが、経験からすると、おそらく内側の垂直線 (高さがどのように変化するか) と下の線 (下の近くにとどめたい) をいじる必要があるでしょう。

それぞれをいじるほど、それぞれが何をするかがわかります。

于 2013-01-10T21:03:45.147 に答える