2013-10-18 22 views

cevap

11

UILabel'a bir şekil katmanı eklemenizi öneririm. Böyle bir şey:

// 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]; 

Bu sana büyük görünümü üzerinde kontrol ve A. için yazı da vereceğiz

GÜNCELLEME: Eğer olacak o

Sadece aklıma geldi etrafında bir daire koymak için dikey olarak "A" ofset elde etmek için mücadele. Bir UILabel'de dikey merkezleme elde etmek için korsanlıklar var, ancak contentVerticalAlignment özelliğini desteklediğinden, bunun yerine bir UITextField kullanmaktan çok daha iyi olur. Kullanıcının metin yazmasını engellemek için userInteractionEnabled değerini NO olarak ayarlamanız yeterlidir! Bunun dışında, CAShapeLayer eklenmesi prensibi aynıdır.

+0

Bu kod derlenmiyor. İlk 3 satırın hepsi yanlış: bir CAShapeLayer'a bir UIBezierPath atama ve UIColors'u CGColorRefs'e atama. – Echelon

+1

Hataları düzelttim. – Echelon

5

Sen @maddy önerilen bu arada bunu başarmak ya, kare rect'in ile UILabel oluşturmak, metin hizalama koyabilirsiniz orta ve kullanım etiketin katman en cornerRadiusborderWidth ile. Etiketin yarım genişliğine (veya yüksekliğine) cornerRadius'u ayarlamanız yeterlidir. İyi şanslar!