2013-10-18 4 views
5

Ich möchte etwas, was wie dies zu tun, option imageWie zeichne ich einen Kreis in UILabel?

Wie einen Kreis in UILabel zu ziehen, die auf diesem Bild ähnlich aussieht, ich möchte nur vermeiden, anstatt ein Bild mit.

+9

Verwenden Sie das Unicode-Zeichen für die eingekreiste A - Ⓐ – rmaddy

+1

Was genau Sie tun möchten? einen kleinen Zauberstab ausarbeiten, um ein Symbol zu haben, oder wollen, dass alle anderen Charaktere hin und wieder eingekreist werden usw.? – amar

Antwort

11

Ich würde vorschlagen, dem UILabel eine Formebene hinzuzufügen. Etwas wie folgt aus:

// Create the shape layer 

CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
circleLayer.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 50, 50)].CGPath; 
circleLayer.fillColor = [UIColor clearColor].CGColor; 
circleLayer.strokeColor = [UIColor whiteColor].CGColor; 
circleLayer.lineWidth = 1; 

// Add it do your label's layer hierarchy 

[label.layer addSublayer:circleLayer]; 

Das gibt Ihnen die größte Kontrolle über sein Aussehen und die der Schriftart für die A.

UPDATE:

Es ist nur fiel mir ein, dass Sie kämpfen, um das "A" vertikal versetzt zu bekommen, um einen Kreis darum zu legen. Es gibt Hacks, um die vertikale Zentrierung in einem UILabel zu erhalten, aber es wäre viel besser, stattdessen ein UITextField zu verwenden, da es die contentVerticalAlignment-Eigenschaft unterstützt. Sie müssen lediglich userInteractionEnabled auf NO setzen, damit der Benutzer keinen Text eingeben kann!

Ansonsten ist das Prinzip des Hinzufügens der CAShapeLayer gleich.

+0

Dieser Code wird nicht kompiliert. Die ersten drei Zeilen sind alle falsch: Zuweisen eines UIBezierPath zu einem CAShapeLayer und Zuweisen von UIColors zu CGColorRefs. – Echelon

+1

Ich habe die Fehler behoben. – Echelon

5

Sie können diese @maddy durch die Art und Weise erreichen vorgeschlagen oder erstellen UILabel mit Platz rect, Textausrichtung auf die Mitte und die Verwendung Etikett Schicht der cornerRadius mit borderWidth setzen. Setzen Sie einfach cornerRadius auf die halbe Breite (oder Höhe) des Etiketts. Viel Glück!