2016-03-16 25 views
6

tôi đang cố gắng để thực hiện một UILabel trong Swift một vòng tròn hoàn hảo, Tôi hiện đang sử dụng như sau:Làm thế nào để làm cho UILabel trong Swift một vòng tròn

pResult.layer.masksToBounds = true 
     pResult.layer.cornerRadius = 125 

Vấn đề ở đây là nó hoạt động tốt trên 6s Thêm nhưng bất kỳ kích thước nào khác, dĩ nhiên là một hình dạng khác - cách tốt nhất để làm điều này là gì?

Trả lời

16

Góc tròn hoặc vòng tròn đầy đủ? Dù sao, giả sử rằng bạn muốn tùy chọn thứ hai, bạn nên hạn chế tỷ lệ khung hình (chiều rộng: chiều cao) thành 1: 1 trên bảng phân cảnh để nhãn luôn là hình vuông. Sau đó, trong đoạn code, bạn có thể chỉ cần làm một cái gì đó giống như

pResult.layer.cornerRadius = pResult.frame.width/2 

luôn luôn làm cho nó một vòng tròn hoàn hảo, không có vấn đề gì kích thước màn hình nó sẽ được về.

+0

tôi sẽ đi để tính bán kính góc: hãy bán kính = min (yourButton.frame. size.width, yourButton.frame.size.height)/2.0 –

+0

Nó sẽ chỉ dẫn đến một rect tròn nếu bản thân nhãn không đúng kích cỡ, nhưng đó là cách tốt nhất để làm điều đó nếu anh ta muốn, có – FruitAddict

+0

Cảm ơn sự giúp đỡ đã hoạt động hoàn hảo – AppleTattooGuy

7

Bạn muốn tạo vòng tròn hoàn hảo, trước tiên hãy đảm bảo chiều rộng và chiều cao của nhãn giống nhau.

pResult.layer.cornerRadius = CGRectGetWidth(pResult.frame)/2 
pResult.layer.masksToBounds = true 
0
//You can provide UserdefiendRunTimeConstraints on the Label using Storyboard or XIB Select label and give 

(Ex. Label của bạn Width = 100 & Height = 100)

KeyPath =layer.cornerRadius 
Type = Number 
Value = 50 

KeyPath = layer.masksToBounds 
Type = Boolean 
Value = True 

KeyPath = layer.borderWidth 
Type = Number 
Value = 2 
0

Phụ thuộc vào câu trả lời của @FruitAddict, tôi muốn cải thiện nó hoàn hảo hơn. Bạn nên sử dụng thuộc tính .height thay vì .width gây ra trong trường hợp độ dài của nhãn dài hơn (văn bản tăng) mã này sẽ không hoạt động. Và mã sẽ như thế này:

pResult.layer.cornerRadius = pResult.frame.height/2 
2

Nếu bạn đang sử dụng nhanh chóng 3 thì hãy thử điều này:

lblRoundDot.layer.cornerRadius = lblRoundDot.frame.width/2 
lblRoundDot.layer.masksToBounds = true 
Các vấn đề liên quan