iPhone6が発売されて画面サイズがどんどん縦長になっている中、
旧デバイスのiPhone3Gにまで完全対応させるのは難しくなってきていますね。

最新デバイス向けに最適なレイアウトにすると3Gでは画面が切れてしまい、
3Gに合わせると最新デバイスで余白だらけになってしまう・・・。

旧デバイスを非対応ということに出来れば良いのですが、
Appleはそれを許可していないため、3Gで画面が切れてしまうとアプリが却下されてしまいます。

この件の対処方法としては、ストーリーボードをiPhone3G用の場合だけ
別に分けるという方法があります。

以下に手順をまとめましたので、ご参考にしてみて下さい。

1.ストーリーボードを選択し、File > Duplicate…をクリックします。
image01

2.ファイル名は「Storyboard_3」としてSaveをクリックします。
スクリーンショット 2014-11-13 17.05.55

3.Main.storyboardとは別にもう1つストーリーボードファイルが作成されます。
これがiPhone3G用のストーリーボードになります。
スクリーンショット 2014-11-13 17.27.03

このストーリーボードをクリックして、プレビュー機能で確認しながら
iPhone3G(3.5-inch)に最適表示になるようにレイアウトを調整します。

[プレビュー機能の使い方はこちら]
http://xn--iphone-uo4e6oqfp797b208bwzvcom2a.com/?p=307

4.iPhone3G用のストーリーボードが出来たら、
アプリ起動時にデバイスを自動判別し
iPhone3Gだった場合に上記ストーリーボードを適用させる、
という処理をAppDelegate.mに記述します。

AppDelegate.mに以下のメソッドがありますが、

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    return YES;
}

これを以下のように書き換えます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    // デバイスを判別してストーリーボードを適用する
    UIStoryboard *storyboard;
    NSString *storyBoardName;
    
    // 機種名の取得
    NSString *modelName = [[UIDevice currentDevice] model];

    storyBoardName = @"Main";

    if (![modelName hasPrefix:@"iPad"]) {
        // スクリーンサイズを取得
        CGRect r = [[UIScreen mainScreen] bounds];
        if (r.size.height == 320 || r.size.height == 480) {
            storyBoardName = @"Storyboard_3";
        }
    }
    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];

    return YES;
}

これで、iPhone3Gで実行された場合に自動的に
専用のストーリーボードが適用されるようになります。

こんにちは、ハルジオンです。

WWDC2013で正式にiOS7が発表されました。
正式リリースは2013年秋になるそうです。

さて、iOS7の新機能がサポートされる
対応機種について調べてみました。

完全に対応しているのは
iPhone5とiPod touch5の2機種のみ。

その他は一部の機能が非対応だそうです。

■スワイプによるカメラ切り替え

 (対応)
 iPhone4、iPhone4S、iPhone5、iPad3、iPad4、iPad mini、iPod touch5

 (非対応)
 iPad2

■カメラフィルター

 (対応)
 iPhone5、iPod touch5

 (非対応)
 iPhone4、iPhone4S、iPad2、iPad3、iPad4、iPad mini

■写真アプリフィルター

 (対応)
 iPhone4、iPhone4S、iPhone5、iPad3、iPad4、iPad mini、iPod touch5

 (非対応)
 iPad2

■AirDrop

 (対応)
 iPhone5、iPod touch5、iPad4、iPad mini

 (非対応)
 iPhone4、iPhone4S、iPad2、iPad3

それではまた。