2013-10-18 42 views
5

Tôi muốn làm một số điều như thế này, option imageLàm thế nào để vẽ một vòng tròn trong UILabel?

Làm thế nào để vẽ một vòng tròn trong UILabel trông tương tự như hình ảnh này, tôi chỉ muốn tránh sử dụng một hình ảnh để thay thế.

+9

Sử dụng ký tự Unicode cho vòng tròn A - Ⓐ – rmaddy

+1

Chính xác bạn muốn làm gì? xây dựng một litle bạn cây đũa phép để có một biểu tượng hoặc muốn mỗi char khác vòng quanh bây giờ và sau đó vv? – amar

Trả lời

11

Tôi muốn đề xuất thêm một lớp hình dạng vào nhãn UILabel. Một cái gì đó như thế này:

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

Điều đó sẽ cung cấp cho bạn sự kiểm soát lớn hơn xuất hiện của nó và của phông chữ cho A.

UPDATE:

Nó chỉ xảy ra với tôi rằng bạn sẽ đấu tranh để có được "A" theo chiều dọc bù đắp để đặt một vòng tròn xung quanh nó. Có những hacks để có được trung tâm theo chiều dọc trong một UILabel, nhưng bạn sẽ tốt hơn bằng cách sử dụng một UITextField thay vào đó, vì nó hỗ trợ thuộc tính contentVerticalAlignment. Bạn chỉ cần đặt userInteractionEnabled thành NO để ngăn người dùng nhập văn bản trên đó!

Ngoài ra, nguyên tắc thêm CAShapeLayer cũng giống nhau.

+0

Mã này không biên dịch. 3 dòng đầu tiên không chính xác: gán UIBezierPath cho một CAShapeLayer và gán UIColors cho CGColorRefs. – Echelon

+1

Tôi đã sửa lỗi. – Echelon

5

Bạn có thể đạt được điều này theo cách @maddy gợi ý hoặc tạo UILabel với hình vuông thẳng đứng, đặt căn chỉnh văn bản ở giữa và sử dụng lớp của nhãn là cornerRadius với borderWidth. Chỉ cần đặt cornerRadius thành chiều rộng một nửa (hoặc chiều cao) của nhãn. Chúc may mắn!

Các vấn đề liên quan