「Xamarin.MacでDockアイコンを非表示にする」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「'''Mac OS X'''のシステムステータスバーWindowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリ...」)
 
9行目: 9行目:
 
#* 型に「Boolean」
 
#* 型に「Boolean」
 
#* 値に「Yes」
 
#* 値に「Yes」
 +
 +
==実装2: 動的に制御する==
 +
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。
 +
[[ソースコード]]で動的に制御できると捗る。
 +
この例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ。
 +
<source lang="csharp">
 +
    public partial class AppDelegate : NSApplicationDelegate
 +
    {
 +
        // 〜〜〜中略〜〜〜
 +
 +
        public override void DidFinishLaunching(NSNotification notification)
 +
        {
 +
            // NSApplicationのActivationPolicyプロパティに
 +
            // AccessoryまたはProhibitedを設定するとドックアイコンが非表示になり、
 +
            // Regularを設定するとドックアイコンが表示になる。
 +
            var app = NSApplication.SharedApplication;
 +
            app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
 +
        }
 +
    }
 +
</source>
  
 
==その他==
 
==その他==
 +
<del>
 
[[Xamarin.Mac]]ではHIServices.frameworkが使えないので[[ソースコード]]レベルで動的に制御することはできない<ref>https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.html</ref>。
 
[[Xamarin.Mac]]ではHIServices.frameworkが使えないので[[ソースコード]]レベルで動的に制御することはできない<ref>https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.html</ref>。
 +
</del>
  
 
==関連項目==
 
==関連項目==

2015年5月25日 (月) 04:50時点における版

Mac OS XシステムステータスバーWindowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリケーションではドックWindowsでいうタスクバー)のアイコンは非表示にしたい。

実装1

プリファレンスファイルで設定する[1]

  1. info.plistファイルを開く
  2. 下部にあるタブで「ソース」を選ぶ
  3. Add new entryをクリックして以下の一行をする
    • プロパティに「LSUIElement」(Application is agentと表示される)
    • 型に「Boolean」
    • 値に「Yes」

実装2: 動的に制御する

info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 ソースコードで動的に制御できると捗る。 この例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ。

    public partial class AppDelegate : NSApplicationDelegate
    {
        // 〜〜〜中略〜〜〜

        public override void DidFinishLaunching(NSNotification notification)
        {
            // NSApplicationのActivationPolicyプロパティに
            // AccessoryまたはProhibitedを設定するとドックアイコンが非表示になり、
            // Regularを設定するとドックアイコンが表示になる。
            var app = NSApplication.SharedApplication;
            app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
        }
    }

その他

Xamarin.MacではHIServices.frameworkが使えないのでソースコードレベルで動的に制御することはできない[2]

関連項目

参考文献