前回までの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があります