Ich versuche eine benutzerdefinierte NSWindow
zu erstellen, also habe ich eine mit der entsprechenden randlosen Fenstermaske erstellt und das funktioniert. Ich stelle meine eigene Inhaltsansicht zur Verfügung, was in Ordnung ist. Aber ich versuche mit abgerundeten Ecken zu zeichnen, die auch Unteransichten in diese Ecken schneiden. Ist das möglich?
In meiner Inhaltsansicht kann ich drawRect:
überschreiben und einen Pfad mit runden Ecken zeichnen, aber wenn ich Unteransichten hinzufüge, werden sie nicht abgeschnitten.
Ich kann stattdessen meine Inhaltsansicht layer-backed machen und ihr einen Eckenradius geben (mit masksToBounds
auf YES
), aber wenn ich Subviews hinzufüge, werden sie immer noch nicht von meinen runden Ecken abgeschnitten.
Gibt es eine Möglichkeit, dies zu tun? Oder eine Möglichkeit, ein NSWindow ohne Titelleiste zu zeichnen und die volle Kontrolle über die Zeichnung zu haben und trotzdem die abgerundeten Ecken zu behalten?
Was ich tun konnte, ist eine benutzerdefinierte Unterklasse meines NSWindow:
%Vor%und dann habe ich in IB die Klasse meiner Inhaltsansicht in ELGRoundView geändert:
%Vor%Ich platzierte eine weitere quadratische Unteransicht in meiner Inhaltsansicht mit folgendem Inhalt:
%Vor%Ich endete mit:
Was @ericgorr vorschlägt, ist korrekt. Wenn das Fenster beweglich und in der Größe veränderbar sein soll, ändern Sie die Init des NSWindow wie folgt:
%Vor%Weitere Anpassungen finden Sie unter Apple Beispielcode Ссылка
Subclassing ist der flexibelste Weg. Wenn Sie keine Unterklasse verwenden möchten, verwenden Sie diesen Code.
%Vor%