「Xamarin.MacでDockアイコンを非表示にする」の版間の差分
ナビゲーションに移動
検索に移動
(→その他) |
|||
13行目: | 13行目: | ||
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 | info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 | ||
[[ソースコード]]で動的に制御できると捗る。 | [[ソースコード]]で動的に制御できると捗る。 | ||
− | + | ||
+ | NSApplicationインスタンスのActivationPolicyプロパティに、「Accessory」または「Prohibited」を設定するとドックアイコンが非表示になり、「Regular」を設定するとドックアイコンが表示になる。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
public partial class AppDelegate : NSApplicationDelegate | public partial class AppDelegate : NSApplicationDelegate | ||
21行目: | 22行目: | ||
public override void DidFinishLaunching(NSNotification notification) | public override void DidFinishLaunching(NSNotification notification) | ||
{ | { | ||
− | |||
− | |||
− | |||
var app = NSApplication.SharedApplication; | var app = NSApplication.SharedApplication; | ||
app.ActivationPolicy = NSApplicationActivationPolicy.Accessory; | app.ActivationPolicy = NSApplicationActivationPolicy.Accessory; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | 上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ。 | ||
+ | <source lang="csharp"> | ||
+ | static class MainClass | ||
+ | { | ||
+ | static void Main(string[] args) | ||
+ | { | ||
+ | NSApplication.Init(); | ||
+ | |||
+ | var application = NSApplication.SharedApplication; | ||
+ | application.ActivationPolicy = NSApplicationActivationPolicy.Accessory; | ||
+ | application.Delegate = new AppDelegate(); | ||
+ | application.Run(); | ||
} | } | ||
} | } |
2015年5月25日 (月) 04:54時点における版
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メソッドでいきなり叩いても動くようだ。
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]。