Attention! Translated article might be found on my English blog.

2015年7月25日土曜日

+[NSWindow standardWindowButton:forStyleMask:]を使おうと思ったが諦めた

QuickTime Playerのようにタイトルバーがフェードするウインドウを作ろうと思い色々試したのですが、
最終的に諦めました。

Cocoaではタイトルバーの左にあるボタン群は+[NSWindow standardWindowButton:forStyleMask:]で生成可能ですが、
あるトリックを使わなければマウスオーバー時に'+', '-'などのアイコンを表示できないようでした。
そのトリックとは、'superviewの_mouseInGroupをオーバーライドするというものです。

web上で情報を探してみましたが、これ以外の解決策は無さそうでした。

そもそも今回の目的は
・ウインドウ全面にビューを描画させる(NSBorderlessWindowMaskを使う)
・ウインドウ上へマウスオーバーした際にクローズボタンのみフェードさせる
だったので、通常のNSButtonでクローズボタンを作ることにしました。

参考:  
+ standardWindowButton:forStyleMask: - NSWindowClassReference
Title Bar Buttons and Custom Title Bars
Best practices for using standard window widgets in a custom window | Cocoabuilder
insidegui/FOTWindow · GitHub
madebyjeffrey/OrganicUI · GitHub
irlabs/TransparentWebView · GitHub