2011-01-04 20 views
4

私はタイトルバーのないカスタムNSWindowを作成しており、それは完全にボーダーレスにするためにNSBorderlessWindowMaskを使用しています。しかし、私がこれを持っている問題は、ウィンドウが鋭いエッジを持っていることです。これと同様に、リサイズコントロールもありません。角の丸いボーダーレスNSWindow

境界線のないウィンドウの角を丸くするにはどうすればよいですか?

その質問は、タイトルバーの削除について 以上であったし、それが 現在、答えを保持していないので、これはthis questionの重複ではありません。

+0

[this](http://stackoverflow.com/questions/19940019/nswindow-with-round-corners-and-shadow/27613308#27613308)のようなものを探している可能性があります。これは縁取られたスタイルですが、探しているものに近いようです。 – Eonil

答えて

7

このウィンドウを完全に透明にして、自分で描画することができます。私が持っているサンプルはOpenGLビュー用ですが、QuartzビューやCocoaビューでも動作するはずです。

NSBorderlessWindowMask定数を使用して新しいウィンドウを作成するNSWindowサブクラスの初期化子に、以下を追加します。

[self setOpaque:NO]; 
[self setBackgroundColor:[NSColor clearColor]]; 

おそらく、サイズ変更コントロールを自分で描画する必要があります。私がこれを取ったサンプルはフルスクリーンのウィンドウなので、サイズ変更は必要ありません。

Good Luck。

+0

私はすべてを描くのはどこですか? – Joshua

+0

ビュークラスで '-drawRect:override。 NSImageまたはNSOpenGLViewのサブクラスを描画するには、描画コンテキストが必要です。私が間違っていると、私が答えてくれたコードはあなたのNSWindowサブクラスにあるはずです。また、図面を作成するためにカスタムビューのサブクラスが必要になります。 – Mark

+1

あなたが私に与えたものに続き、私はCocoa With Loveでこのチュートリアルを見つけることができました。あなたの答えを受け入れてください! http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html – Joshua