MonoMac/フルスクリーン表示に対応する

提供: MonoBook
ナビゲーションに移動 検索に移動

Mac OS X Lionから利用できるようになったフルスクリーン表示をMonoMacから利用する方法を示す。

概要[編集 | ソースを編集]

Mac OS X Lionから利用できるようになったフルスクリーン表示の使い方を示す。 もともとフルスクリーン表示はタイトルバーの右上にあるアイコンで行ったが、Mac OS X 10.10 Yosemiteからは緑ボタンがウインドウ最大化(最適化)からフルスクリーンに変更されウザいアレである。

ここでいうフルスクリーン表示はOpenGLなどで使われる「フルスクリーンモード」とは別物なので注意すること。OpenGLのフルスクリーンモードではGPUへの低レベルアクセスができる代わりにCocoaがほぼ機能しなくなるが、フルスクリーン表示はあくまでウインドウを全画面表示しているだけでありCocoaも問題なく使える。

方法1 xibファイルで設定しておく[編集 | ソースを編集]

  1. MainWindow.xibファイルを開く。
  2. Attributes inspectorタブを開く。
  3. Full Screenセレクトボックスの値を「Unsupported」から「Primary Window」に変更する。
  4. おしまい

方法2 プログラムから制御する[編集 | ソースを編集]

  1. MonoMac.AppKit.NSWindowクラスのCollectionBehaviorプロパティにフラグを立てるとリアルタイムで反映される。
    • NSWindowCollectionBehavior列挙体には色々なフラグがあるので暇な人は他にも色々試してみよう。
using System;
using System.Collections.Generic;
using System.Linq;
using MonoMac.Foundation;
using MonoMac.AppKit;

namespace TestFullScreenView
{
    public partial class MainWindowController : MonoMac.AppKit.NSWindowController
    {
        // 〜〜〜中略〜〜〜

        // 何かキーを押したらフルスクリーン表示ボタン(右上に出るやつ)をオンオフするサンプル
        public override void KeyUp(NSEvent theEvent)
        {
            bool isFullScreenIconEnabled = (this.Window.CollectionBehavior & NSWindowCollectionBehavior.FullScreenPrimary)
                                == NSWindowCollectionBehavior.FullScreenPrimary;
            if (isFullScreenIconEnabled)
            {
                // フルスクリーン表示を無効化する
                this.Window.CollectionBehavior &= ~NSWindowCollectionBehavior.FullScreenPrimary;
            }
            else
            {
                // フルスクリーン表示を友好化する
                this.Window.CollectionBehavior |= NSWindowCollectionBehavior.FullScreenPrimary;
            }

            base.KeyUp(theEvent);
        }
    }
}

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]