2010-11-22 12 views
0

Wenn Sie NSRectFill oder NSBezierPath.fillRect verwenden, um einen Block über Text in einer NSTextView zu zeichnen, scheint der Text über mein Rechteck zu gehen. I.e. es gibt nur einen Teil des Rechtecks, der hinter dem Text hervorschaut, den ich eigentlich überschreiben sollte. Wie kann ich sicherstellen, dass ich das Rechteck zeichne, nachdem der Text gezeichnet wurde?NSRectFill in NSTextView wird von Text überschrieben

Antwort

1

Wenn Sie NSTextView unterklassifiziert. Zeichnen Sie zuerst den Text mit dem Super und zeichnen Sie dann Ihre eigenen Sachen.

- (void)drawRect:(NSRect)dirtyRect { 
    [super drawRect:dirtyRect]; 

    NSRectFill(yourOwnRect); 
} 
+0

Und das ist der einzig richtige Weg, es zu tun. Das Zeichnen in die Ansicht von einem Controller ist niemals zuverlässig und verletzt die Trennung von Bedenken - Zeichnen ist der Job der Ansicht. –

+0

Bingo, das hat den Trick gemacht. Ich hatte tatsächlich versucht, aus drawRect zu zeichnen: vorher, aber ich habe nicht bemerkt, dass das Koordinatensystem anders ist als im Rest meines Codes und dachte fälschlicherweise, dass die Zeichnung dort auch nicht funktioniert. Vielen Dank! – stdout

Verwandte Themen