2009-05-31 10 views
0

Ich möchte Text in UIView 's Unteransicht mit drawInRect:withFont:lineBreakMode Aufruf, aber das funktioniert nur auf den aktuellen Kontext.Wie zeichne ich Text in eine Unteransicht?

Ist es möglich, Text aus der aktuellen Ansicht in eine Unteransicht zu zeichnen?

Die Subview ist eine generische UIView Instanz und ich möchte nicht wirklich eine neue UIView-abgeleitete Klasse nur für diesen Zweck erstellen, wenn ich es vermeiden kann.

Antwort

1

Eine Option wäre das Hinzufügen eines CALayers zur Ebene der Ansicht, anstatt eine UIView zur Ansicht hinzuzufügen. Der CALayer verfügt über eine delegate Eigenschaft, der Sie ein beliebiges Objekt zuweisen können. Die CALayer ruft:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 

auf dem delegate, die Sie so etwas wie zu tun nehmen:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx { 
    if (layer == myLayer) { 
     UIGraphicsPushContext(ctx); 
     [string drawInRect:rect withFont:font lineBreakMode:mode]; 
     UIGraphicsPopContext(); 
    } 
} 
0

Nein, Sie können nicht tun, was Sie beschreiben. Subclassing UIView ist genau die Methode, die Sie dafür verwenden sollten - es ist nichts falsch daran, eine UIView-Unterklasse zu erstellen, die nur eine einfache -drawRect:-Methode hat.

1

Nein, wenn Sie etwas mit einem Kontext tun möchten, müssen Sie in der Ansicht -drawRect: sein. Sie können Ihre Unteransicht immer zu einer UIView-Unterklasse machen, die -drawRect überschreibt: um den gewünschten Text anzuzeigen ... aber an dieser Stelle erfinden Sie UILabel neu.

Verwandte Themen