読者です 読者をやめる 読者になる 読者になる

iOSアプリ開発の逆引き辞典

iPhone/iPadで使えるアプリ開発のTipsをまとめてみました

アプリが実行されているiOSのバージョンがiOS 7.0以上であるかどうか判定する

iOS 7.0になり今まで以上にiOS 7.0までのレイアウトとiOS 7.0以上のレイアウトを使い分ける必要が出てきました。

この記事では、アプリが実行されているiOSのバージョンがiOS 7.0以上であるかどうか判定する方法をご紹介します。

iOSのバージョンを取得する

iOSのバージョンを取得するには、UIDeviceクラスのsystemVersionプロパティを使用します。

// iOSのバージョンを取得する
NSString* sysVersion = [[UIDevice currentDevice] systemVersion];

他にもiOSでのデバイス情報(端末情報)を取得するには「端末情報(デバイス情報)を取得する - iOSアプリ開発の逆引き辞典」にて詳しく記載しております。合わせてご参考ください。

iOSのバージョンを比較する

例えば、iOS 7.0以上では新しく用意したレイアウトを適用させたい場合やサポートしていないAPIを使っているという場合、以下のような方法によって特定のバージョンより新しいiOSかどうかを判定させることができます。

まずは下記のisSupportメソッドを作成します。このメソッドは現在のiOSバージョンが「7.0」の時、「7.0」未満のバージョンを渡すと「NO」を返します。

- (BOOL)isSupport:(NSString*)reqSystemVersion
{
    // iOSのバージョンを取得する
    NSString* sysVersion = [[UIDevice currentDevice] systemVersion];
    
    BOOL ret = NO;
    if ([sysVersion compare:reqSystemVersion options:NSNumericSearch] == NSOrderedAscending) {
        // iOSのバージョンが、指定されたバージョン未満である
        ret = NO;
    } else {
        // iOSのバージョンが、指定されたバージョン以上である
        ret = YES;
    }
    return ret;
}

上記のisSupportメソッドを使った例をご紹介します。アプリを実行しているiOSのバージョンは7.0とします。

BOOL isSupport1 = [self isSupport:@"6.0"];
// 結果は「NO」
        
BOOL isSupport2 = [self isSupport:@"7.0"];
// 結果は「YES」

BOOL isSupport3 = [self isSupport:@"7.0.1"];
// 結果は「YES」