「Xamarin.MacでDockアイコンを非表示にする」の版間の差分
ページの作成:「'''Mac OS X'''のシステムステータスバー(Windowsでいうタスクトレイ)にアイコンを表示する、いわゆる常駐アプリ...」 |
imported>Administrator 細 Administrator がページ「Xamarin.Mac/Dockアイコンを非表示にする」を「Xamarin.MacでDockアイコンを非表示にする」に移動しました |
||
| (他の1人の利用者による、間の3版が非表示) | |||
| 9行目: | 9行目: | ||
#* 型に「Boolean」 | #* 型に「Boolean」 | ||
#* 値に「Yes」 | #* 値に「Yes」 | ||
==実装2: 動的に制御する== | |||
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。 | |||
[[ソースコード]]で動的に制御できると捗る。 | |||
NSApplicationインスタンスのActivationPolicyプロパティに、「Accessory」または「Prohibited」を設定するとドックアイコンが非表示になり、「Regular」を設定するとドックアイコンが表示になる。 | |||
<source lang="csharp"> | |||
public partial class AppDelegate : NSApplicationDelegate | |||
{ | |||
// 〜〜〜中略〜〜〜 | |||
public override void DidFinishLaunching(NSNotification notification) | |||
{ | |||
var app = NSApplication.SharedApplication; | |||
app.ActivationPolicy = NSApplicationActivationPolicy.Accessory; | |||
} | |||
} | |||
</source> | |||
上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ(NSApplication.Initメソッド呼び出し後であればどこでも良いようだ)。 | |||
<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(); | |||
} | |||
} | |||
</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> | |||
==関連項目== | ==関連項目== | ||