2011-01-04 12 views
4

Ich erstelle eine benutzerdefinierte NSWindow ohne Titelleiste und verwende NSBorderlessWindowMask, um es völlig randlos zu machen. Das Problem dabei ist jedoch, dass das Fenster scharfe Kanten hat. Außerdem gibt es keine Größenanpassung.Borderless NSWindow mit abgerundeten Ecken

Wie würde ich einem randlosen Fenster abgerundete Ecken geben?

Dies ist nicht ein Duplikat this question wie die Frage war mehr über die Titelleiste entfernt und hält derzeit keine Antworten.

+0

Sie könnten nach etwas suchen wie [dies] (http://stackoverflow.com/questions/19940019/nswindow-with-round-corners-and-shadow/27613308#27613308). Dies ist grenzwertig Stil, aber scheint in der Nähe, was Sie suchen. – Eonil

Antwort

7

Sie können das Fenster vollständig transparent machen und alles selbst zeichnen. Das Beispiel, das ich habe, ist für eine OpenGL-Ansicht, aber es sollte auch für eine Quartz-Ansicht oder Cocoa-Ansicht funktionieren.

Fügen Sie dem Initialisierer Ihrer NSWindow-Unterklasse Folgendes hinzu, wo Sie das neue Fenster mithilfe der NSBorderlessWindowMask-Konstante erstellen.

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

Sie werden wahrscheinlich die Größe selbst bestimmen müssen. Das Beispiel, aus dem ich das gemacht habe, ist ein Vollbild-Fenster, daher ist eine Größenanpassung nicht notwendig.

Viel Glück.

+0

Wo würde ich alles zeichnen? – Joshua

+0

In Ihrer Sicht Klasse '-drawRect: override. Sie benötigen einen Zeichnungskontext, um entweder NSMage oder NSOpenGLView in die entsprechende Unterklasse zu zeichnen. Ich habe falsch verstanden, der Code, den ich dir in meiner Antwort gegeben habe, sollte in deiner NSWindow-Unterklasse sein. Sie benötigen außerdem eine benutzerdefinierte Ansichtsunterklasse, um die Zeichnung auszuführen. – Mark

+1

Going on was du mir gabst, konnte ich dieses Tutorial auf Cocoa With Love finden. Betrachten Sie Ihre Antwort akzeptiert! http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html – Joshua

Verwandte Themen