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

酢ろぐ!

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

Xamarin Studioを使ってみよう!その10 - Retina 4インチかどうか判定する

前回までのTipsでは、Xamarin.iOSを使って「デバイスがiPadかiPhoneか判定する」「Retinaディスプレイかどうか判定する」をご紹介してきました。

今回は、それらのTipsを使用して、液晶がRetinaの4インチ*1かどうかを判断したいと思います。

using System;
using MonoTouch.UIKit;
using MonoTouch.ObjCRuntime;

namespace MonoTouch.Foundation
{
    public static class UIScreenRetina4InchiExtesions
    {
        private static bool IsPad()
        {
            var curDevice = UIDevice.CurrentDevice;
            return curDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad;
        }

        private static bool IsRetina(this UIScreen screen)
        {
            var isResponds = screen.RespondsToSelector(new Selector("scale"));
            return (isResponds && screen.Scale == 2.0);
        }

        public static bool IsRetina4Inchi()
        {
            return IsRetina4Inchi(UIScreen.MainScreen);
        }

        public static bool IsRetina4Inchi(this UIScreen screen)
        {
            if (IsPad()) return false;
            if (!screen.IsRetina()) return false;

            return (screen.Bounds.Size.Height == 568.0f); 
        }
    }
}

このクラスを使って、液晶サイズがRetina4インチかどうかの判定をおこないます。ここではRetina 4インチの為に専用の画像リソースを用意しておき背景画像として使用しています。

if (UIScreen.MainScreen.IsRetina4Inchi())
{
    //  Retina 4 インチの場合は、専用の背景画像を設定する
    bgImageView.Image = new UIImage("BG-568h@2x.png");
}
else
{
    //  kakutyou meso
    bgImageView.Image = new UIImage("BG.png");
}

*1:Retina 4インチを搭載しているデバイスには、iPhone 5や5世代目iPod touchがあります