メインメニューを開く

Mac OS XRetina Displayに対応するアプリケーションを作るための基礎となる。

目次

概要編集

retinaでググってXamarinにしろObjective-CにしろiOSの情報ばかりでOSXの情報が少ないすぎて泣ける。 iMac 5K対応のアプリを作りたいね。

実装1編集

NSWindowsやNSScreenのBackingScaleFactorプロパティを調べる。

    public partial class MainWindowController : NSWindowController
    {
        // 〜〜〜省略〜〜〜

        public override void WindowDidLoad()
        {
            base.WindowDidLoad();

            this.Window.DidMove += (object sender, EventArgs e) => {

                // このウインドウがあるスクリーンが非Retinaならば1.0f、Retinaならば1.0fより大きな値となる。
                var scale = this.Window.BackingScaleFactor;
                Console.WriteLine(scale);

                // NSScreenにもBackingScaleFactorがある
                foreach (var screen in NSScreen.Screens)
                {
                    Console.WriteLine(screen.ColorSpace + ", " + screen.BackingScaleFactor);
                }
            };

            // Retinaと非Retinaのマルチスクリーン環境でウインドウを移動するなどして
            // BackingScaleFactorの値が変化した際にはこのイベントが発生する。
            this.Window.DidChangeBackingProperties += (object sender, EventArgs e) => {
                Console.WriteLine(this.Window.BackingScaleFactor);
            };
        }
    }

関連項目編集

参考文献編集