酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Xamarin Studioを使ってみよう!その9 - Retinaディスプレイかどうか判定する

Xamarin.iOSで、使用中のデバイスがRetinaディスプレイなのか、標準解像度(非Retina)なのかを判定することがあります。Objective-Cを使ってデバイスがRetinaディスプレイかどうかの判定する時は、以下のようにUIScreenクラスのscaleプロパティを使用します。

// Retinaディスプレイかどうか判定する
+ (BOOL) isRetina {
    BOOL isResponds = [[UIScreen mainScreen] respondsToSelector:@selector(scale)];
    if (isResponds && [[UIScreen mainScreen] scale] == 2.0) {
        return YES;
    } else {
        return NO;
    }
}

これをXamarin.iOSを使ってC#で書き換えると以下のようになります。@selector(scale)の書き換えには、new MonoTouch.ObjCRuntime.Selector("scale")を使用します。

public static bool IsRetina()
{
    UIScreen screen = UIScreen.MainScreen;
    var isResponds = screen.RespondsToSelector(
        new MonoTouch.ObjCRuntime.Selector("scale"));

    return (isResponds && screen.Scale == 2.0);
}