タグ : Objective-C

iPhoneの画面サイズにあわせて複数のストーリーボードを使い分けたい

XcodeでiPhoneの開発を行っていると、iPhone4S以下とiPhone5以上とで

異なる画面サイズに対応する必要が出てきます。

(iPhone6、iPhone6 Plusについては改めて記事にします)

iPhone4Sの3.5インチとiPhone5以降の4インチの異なる画面サイズに

どう対応するかですが、それぞれの画面サイズ用のストーリーボードを

用意して、画面サイズにあわせて切り替えて表示させる方法を紹介します。

まず、メインの画面サイズを4インチとします。

ストーリーボードを新規作成します。

FileメニューからNew→Fileと進んで、「User Interface」を選択します。

「Storyboard」があるので、「Next」をクリック、適当な名前を付けて作成します。

例えば「Main_iPhone_3_5.storyboard」等と名前を付けます。

ストーリーボードを新規作成したら、AppDelegate.mの

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

内に以下のように記載します。

//画面サイズによってStoryboardを切り替える
UIStoryboard *storyboard;
NSString *storyBoardName;
    
//Windowsスクリーンのサイズを取得
CGRect screen = [[UIScreen mainScreen] bounds];
//縦の長さが480の場合、古いiPhoneだと判定
if (screen.size.height == 480) {
    storyBoardName = @"Main_iPhone_3_5";
} else {
    storyBoardName = @"Main";
}
//StoryBoardのインスタンス化
storyboard = [UIStoryboard storyboardWithName:storyBoardName bundle:nil];
//画面の生成
UIViewController *mainViewController = [storyboard instantiateInitialViewController];
//ルートウィンドウにひっつける
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = mainViewController;
[self.window makeKeyAndVisible];