Подтвердить что ты не робот

Как объединить края UILabel с Swift

Я просмотрел атрибуты меток в Xcode 6.3, но я не узнал, как округлить края так же, как вы можете обойти края текстового поля.

4b9b3361

Ответ 1

Предполагая, что вы добавили backgroundColor к своей метке, иначе не было бы возможности определить, есть ли у него ребра, вы можете использовать QuartzCore для округления границ метки.

import QuartzCore

yourLabel.layer.backgroundColor  = UIColor.redColor().CGColor
yourLabel.layer.cornerRadius = 5

Ответ 2

Фокус в том, чтобы установить maskToBounds в значение true. Затем будут видны ваши изменения в cornerRadius.

label.layer.masksToBounds = true
label.layer.cornerRadius = 5

Ответ 3

Для этого используйте радиус угла слоя надписи,

mylabel.layer.cornerRadius = yourvalue

если вы не хотите показывать тень, добавьте,

mylabel.layer.masksToBounds = true 

у меня сработало нормально.

Ответ 4

Вы можете дать cornerRadius и границы, как это.

Для Свифта 4 и 3

MyLable.layer.masksToBounds = true
MyLable.layer.cornerRadius = 6
MyLable.layer.borderWidth = 2
MyLable.layer.borderColor = UIColor.black.cgColor

Для Objective-C

[MyLable.layer setMasksToBounds:TRUE];
[MyLable.layer setCornerRadius:6];
[MyLable.layer setBorderWidth:2];
[MyLable.layer setBorderColor:[UIColor blackColor].CGColor];

Ответ 5

Способ округления углов любого CALayer заключается в изменении layer.cornerRadius. По умолчанию это повлияет только на цвет фона и любую границу слоя, которую вы применили. Вы также можете включить clipsToBounds для обрезания содержимого пикселя.

Когда представление, такое как UILabel, рисует себя, оно обращается к содержимому слоя слоя. Вы можете захватить view.layer для доступа к слою.

Таким образом, вы можете установить радиус угла слоя, чтобы повлиять на фоновый цвет представления. Вы также можете включить clipsToBounds для обрезки любого содержимого в представлении. Если само представление не слишком близко к краю, оно должно достичь того, чего вы хотите. Это должно быть правильно для меток.

Ответ 6

Выберите свой UILabel

В вашем инспекторе добавьте layer.masksToBounds и layer.cornerRadius

Easy way to achieve rounded corners for label

Меньше кода для обработки в ваших классах 😊

Ответ 7

Прекрасно работает в Xcode 8.1.2 с Swift 3, протестирован в АВГУСТЕ 2017 г.

"cornerRadius" - это свойство ключа для установки закругленных ребер, где, если вы используете один и тот же стиль для всех ярлыков в своем приложении, я бы рекомендовал для метода расширения.

Код:

  // extension Class
extension UILabel {

    // extension user defined Method
    func setRoundEdge() {
        let myGreenColor = (UIColor(red: -0.108958, green: 0.714926, blue: 0.758113, alpha: 1.0))
        //Width of border
        self.layer.borderWidth = 1.0
        //How much the edge to be rounded
        self.layer.cornerRadius = 5.0

        // following properties are optional
        //color for border
        self.layer.borderColor = myGreenColor.cgColor
        //color for text
        self.textColor = UIColor.red
        // Mask the bound
        self.layer.masksToBounds = true
        //clip the pixel contents
        self.clipsToBounds = true
    }
}

Вывод:

введите описание изображения здесь

Почему метод расширения?

Создайте файл Swift и добавьте следующий код, который имеет метод Extention для класса "UILabel", где этот метод определен пользователем, но будет работать для всех ярлыков в вашем приложении и поможет поддерживать согласованность и чистый код, если вы измените какой-либо стиль в будущем, требуется только в методе расширения.

Ответ 8

Вы создаете расширение для UIView с IBInspectable

extension UIView {

@IBInspectable var cornerRadius: CGFloat {
    get {
        return layer.cornerRadius
    }
    set {
        layer.cornerRadius = newValue
        layer.masksToBounds = newValue > 0
    }
}

@IBInspectable var borderWidth: CGFloat {
    get {
        return layer.borderWidth
    }
    set {
        layer.borderWidth = newValue
    }
}

@IBInspectable var borderColor: UIColor? {
    get {
        return UIColor(cgColor: layer.borderColor!)
    }
    set {
        layer.borderColor = newValue?.cgColor
    }
 }
}

enter image description here

Ответ 9

Swift:

//round shape corner radius set
self.lblName.layer.masksToBounds = true
self.lblName.layer.cornerRadius = self.lblName.bounds.width / 2

//custom shape corner radius set
self.lblName.layer.masksToBounds = true
self.lblName.layer.cornerRadius = 12