2016-03-16 3 views
6

Я пытаюсь сделать UILabel в Swift идеальный круг, я в настоящее время, используя следующие:Как сделать UILabel в Swift круг

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

Проблема с этим состоит в том, что она отлично работает на 6s Plus но любой другой размер это, конечно, другая форма - что лучший способ сделать это?

ответ

16

Окруженные углы или полный круг? В любом случае, предполагая, что вам нужен второй вариант, вы должны ограничить соотношение сторон (ширина: высота) до 1: 1 на раскадровке, чтобы метка всегда была квадратом. Затем в коде, вы можете просто сделать что-то вроде

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

всегда сделать это идеальный круг, независимо от того, какой размер экрана будет дальше.

+0

Я бы для расчета радиуса угла: пусть радиус = мин (yourButton.frame. size.width, yourButton.frame.size.height)/2.0 –

+0

Это просто приведет к закругленному прямоугольнику, если сам ярлык не имеет надлежащего размера, но это лучший способ сделать это, если он этого захочет, да – FruitAddict

+0

Спасибо за помощь что отлично работало – AppleTattooGuy

7

Вы хотите создать идеальный круг, а затем сначала убедитесь, что ширина и высота этикеток одинаковы.

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 

(Исх. Ваша метка Ширина = 100 & Высота = 100)

KeyPath =layer.cornerRadius 
Type = Number 
Value = 50 

KeyPath = layer.masksToBounds 
Type = Boolean 
Value = True 

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

Зависят от ответа @FruitAddict, я хотел бы улучшить его более совершенным. Вы должны использовать свойство .hight вместо .width cause, если длина метки больше (увеличение текста), этот код не будет работать. А код будет выглядеть следующим образом:

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

Если вы используете скор 3, пожалуйста, попробуйте следующее:

lblRoundDot.layer.cornerRadius = lblRoundDot.frame.width/2 
lblRoundDot.layer.masksToBounds = true 
Смежные вопросы