「Xamarin.MacでDockアイコンを非表示にする」の版間の差分
ナビゲーションに移動
検索に移動
28行目: | 28行目: | ||
</source> | </source> | ||
− | + | 上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ(NSApplication.Initメソッド呼び出し後であればどこでも良いようだ)。 | |
<source lang="csharp"> | <source lang="csharp"> | ||
static class MainClass | static class MainClass |
2015年5月25日 (月) 04:55時点における版
Mac OS Xのシステムステータスバー(Windowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリケーションではドック(Windowsでいうタスクバー)のアイコンは非表示にしたい。
実装1
プリファレンスファイルで設定する[1]。
- info.plistファイルを開く
- 下部にあるタブで「ソース」を選ぶ
- Add new entryをクリックして以下の一行をする
- プロパティに「LSUIElement」(Application is agentと表示される)
- 型に「Boolean」
- 値に「Yes」
実装2: 動的に制御する
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 ソースコードで動的に制御できると捗る。
NSApplicationインスタンスのActivationPolicyプロパティに、「Accessory」または「Prohibited」を設定するとドックアイコンが非表示になり、「Regular」を設定するとドックアイコンが表示になる。
public partial class AppDelegate : NSApplicationDelegate
{
// 〜〜〜中略〜〜〜
public override void DidFinishLaunching(NSNotification notification)
{
var app = NSApplication.SharedApplication;
app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
}
}
上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ(NSApplication.Initメソッド呼び出し後であればどこでも良いようだ)。
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();
var application = NSApplication.SharedApplication;
application.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
application.Delegate = new AppDelegate();
application.Run();
}
}
その他
Xamarin.MacではHIServices.frameworkが使えないのでソースコードレベルで動的に制御することはできない[2]。