NSScrollview und transparent, Überlagerung von NSScroller-Unterklassen

8

Ich habe eine glatte NSScroller -Unterklasse erstellt, kann aber nicht herausfinden, wie ich sie über dem NSScrollView überlagern kann, anstatt die documentView beiseite zu schieben.

Hier können Sie den Hintergrund eines NSCollectionView sehen, den ich 100% breit machen möchte, und den Scroller oben sitzen lassen. Momentan muss ich einen weißen Hintergrund für den Scroller setzen, da das Zeichnen mit clearColor nicht transparent, sondern schwarz dargestellt wird.

Gehe ich das falsch herum? Fehle ich etwas Offensichtliches hier? Wie kann ich das Verhalten eines transparent verfolgten NSScroller erreichen, das auf einem Inhalt von NSScrollView liegt?

    
coneybeare 09.03.2011, 20:32
quelle

3 Antworten

8

Ich konnte die Positionierung erreichen, indem ich tile in der Unterklasse OF NSSCROLLVIEW

implementiere %Vor%

Und es stellte sich heraus, dass der Versuch, eine klare Farbe zu zeichnen, das Problem war, mit dem man beginnen sollte. In der Scroller-Unterklasse habe ich einfach jede Zeichnung, die mit der Schiebereglerspur zu tun hatte, komplett weggelassen. DURCH OVERRIDING DRAWRECT: DER NSSCROLLER SUBCLASS, WIE SO:

%Vor%

    
coneybeare 09.03.2011, 22:05
quelle
1

Beachten Sie, dass Sie die Layer-Unterstützung für das scrollView aktivieren müssen, damit dies ordnungsgemäß funktioniert!

Das heißt, rufen Sie an:

%Vor%

oder setzen Sie es in Interface Builder.

Wenn Sie dies nicht tun, zeichnet die Inhaltsansicht von scrollView ON TOP der Scroller. Außerdem sollten Sie beachten, dass Sie zwei NSViews (NSScroller über NSScrollView, beide von NSView) im Wesentlichen überlappen. Im Gegensatz zu UIViews auf iOS werden überlappende NSViews unter OS X von keiner aktuellen Version unterstützt des Betriebssystems (10.6 nach unten). Wenn CALayers eingeschaltet wird, scheint es zu funktionieren, aber es ist immer noch etwas zu beachten. Natürlich kann das Aktivieren von Ebenen die Zeichenleistung erheblich beeinträchtigen.

Siehe diese SO-Frage für weitere Einzelheiten: Is Gibt es eine geeignete Möglichkeit, überlappende NSView-Geschwister zu behandeln?

    
Bryan 26.05.2011 21:44
quelle
-1

Was ist mit dieser Farbe: [NSColor colorWithCalibratedRed:0.0 green:0.0 blue:0.0 alpha:0.0] Ich denke, dass Sie die Größen mit dem Schnittstellenerbauer ändern müssen.

    
lbrndnr 09.03.2011 20:42
quelle