运行时BorderColor在Xcode 9中不起作用

时间:2017-09-15 05:48:19

标签: ios swift xcode

我将CALayer的边框颜色扩展为运行时属性,但它不起作用。

仅显示默认的黑色。

extension CALayer {
    var borderUIColor: UIColor {
        set {
            self.borderColor = newValue.cgColor
        }

        get {
            return UIColor(cgColor: self.borderColor!)
        }
    }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

您应谨慎处理nil值,并可以为UIView创建一个扩展名,将该属性声明为@IBInspectabe

import UIKit

extension UIView {
    @IBInspectable var borderColor: UIColor? {
        get {
            if let color = layer.borderColor {
                return UIColor(cgColor: color)
            }
            else {
                return nil
            }
        }
        set { layer.borderColor = newValue?.cgColor }
    }
}

这使得在Attribute Inspector中设置边框颜色变得更加容易。

编辑:您的示例也适用于Xcode 9.0和8.3.3。可能这是测试版中的一个错误。

答案 1 :(得分:0)

试试这个:

extension UILabel{
    func setBorderColor(width:CGFloat,color:UIColor) -> Void
    {
        self.layer.borderColor = color.cgColor
        self.layer.borderWidth = width
    }
}

并在任何地方实现此功能,例如

label.setBorderColor(width: 2.0, color: UIColor.brown)

希望这有帮助!