Benutzerdefiniertes NSWindow mit abgerundeten Ecken, die Unteransichten abschneiden

7

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?

    
jbrennan 02.03.2013, 20:48
quelle

3 Antworten

12

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:

    
ericg 02.03.2013 21:51
quelle
5

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 Ссылка

    
ThE uSeFuL 21.06.2013 06:44
quelle
1

Subclassing ist der flexibelste Weg. Wenn Sie keine Unterklasse verwenden möchten, verwenden Sie diesen Code.

%Vor%     
Klajd Deda 25.04.2016 17:11
quelle

Tags und Links