Есть ли способ создания UILabels с закругленными углами? Если ответ «нет», как можно было бы создать такой объект?
источник
Есть ли способ создания UILabels с закругленными углами? Если ответ «нет», как можно было бы создать такой объект?
iPhone OS 3.0 и более поздние версии поддерживают cornerRadius
свойство CALayer
класса. У каждого представления есть CALayer
экземпляр, которым вы можете манипулировать. Это означает, что вы можете получить закругленные углы в одну строку:
view.layer.cornerRadius = 8;
#import <QuartzCore/QuartzCore.h>
Чтобы получить доступ к заголовкам и свойствам CALayer, вам потребуется ссылка на платформу QuartzCore и ссылка на нее.
Один из способов сделать это, который я недавно использовал, - создать подкласс UIView, который просто рисует скругленный прямоугольник, а затем сделать UILabel или, в моем случае, UITextView, его внутренним подвидом. В частности:
UIView
подкласс и назовите его примерно так RoundRectView
.RoundRectView
«S drawRect:
метода, нарисовать путь вокруг границ представления с использованием Core Graphics вызовов , как CGContextAddLineToPoint () для краев и CGContextAddArcToPoint и () для скругленных углов.UILabel
экземпляр и сделайте его подпредставлением RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Вы можете поместить RoundRectView в представление с помощью Interface Builder, если вы создадите универсальный UIView, а затем измените его класс с помощью инспектора. Вы не увидите прямоугольник, пока не скомпилируете и не запустите свое приложение, но по крайней мере вы сможете разместить подпредставление и подключить его к розеткам или действиям, если это необходимо.
Для устройств с iOS 7.1 или более поздней версии необходимо добавить:
источник
Для Swift IOS8 и выше на основе ответа OScarsWyck:
источник
YES
наtrue
.UILabel
призванныйmyLabel
.#import <QuartzCore/QuartzCore.h>
в вашей
viewDidLoad
строке напишите:self.myLabel.layer.cornerRadius = 8;
Удачи
источник
Вы можете сделать закругленную границу с шириной границы любого элемента управления следующим образом: -
Просто замени
lblName
на свойUILabel
.Примечание: - Не забудьте импортировать
<QuartzCore/QuartzCore.h>
источник
Я сделал быстрый
UILabel
подкласс для достижения этого эффекта. Кроме того, я автоматически устанавливаю цвет текста на черный или белый для максимальной контрастности.результат
Используемые SO-сообщения:
Игровая площадка
Просто вставьте это в iOS Playground:
источник
Другой способ - разместить png за UILabel. У меня есть представления с несколькими метками, которые перекрывают один фоновый PNG, который имеет все изображения для отдельных меток.
источник
xCode 7.3.1 iOS 9.3.2
источник
Если вы хотите , закругленный угол пользовательского интерфейса объекты , такие как (
UILabel
,UIView
,UIButton
,UIImageView
) с помощью раскадровки затем установитьclip to bounds
истинные и установитьUser Defined Runtime Attributes
ключ путь какlayer.cornerRadius
, тип = Число и значение = 9 (как ваше требование)источник
источник
Swift 3
Если вы хотите скругленную метку с цветом фона, в дополнение к большинству других ответов, вам также нужно установить
layer
цвет фона. Не работает при настройкеview
цвета фона.Если вы используете автоматическую разметку, хотите добавить отступы вокруг метки и не хотите устанавливать размер метки вручную, вы можете создать подкласс UILabel и
intrinsincContentSize
свойство переопределения :Чтобы объединить два, вам также нужно будет установить
label.textAlignment = center
, иначе текст будет выровнен по левому краю.источник
В Monotouch / Xamarin.iOS я решил ту же проблему, как это:
источник
Прекрасно работает в Swift 2.0
источник
Пробовали ли вы использовать
UIButton
конструктор интерфейса (с закругленными углами) и экспериментировать с настройками, чтобы он выглядел как ярлык. если все, что вам нужно, это отображать статический текст внутри.источник
«cornerRadius» является ключевым свойством для установки закругленных краев, где, если вы используете один и тот же стиль для всех меток в вашем приложении, я бы рекомендовал использовать метод расширения.
Код:
Вывод:
Почему метод расширения?
Создайте файл Swift и добавьте следующий код, который имеет метод Extention, в класс «UILabel», где этот метод определяется пользователем, но будет работать для всех меток в вашем приложении и поможет поддерживать согласованность и чистый код, если вы изменить любой стиль в будущем требуется только в методе расширения.
источник
В зависимости от того, что именно вы делаете, вы можете сделать изображение и программно установить его в качестве фона.
источник