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

Runtime BorderColor is not working in Xcode 9

提问人:nirav 提问时间:9/15/2017 最后编辑:Vadim Kotovnirav 更新时间:10/3/2017 访问量:1144

问:

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

它仅显示默认的黑色。

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

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

enter image description here

iOS Swift Xcode

评论

1赞 clemens 9/15/2017
您不需要扩展。您可以直接从 Xcode 的 Identity Inspector 访问层。borderColor
0赞 nirav 9/15/2017
我认为没有这样的功能。
0赞 Sandeep Bhandari 9/15/2017
@macmoonshine : 我想您可以在用户定义的运行时属性部分指定 layer.borderColor
0赞 nirav 9/15/2017
@SandeepBhandari,但它只显示黑色边框
1赞 Darren Huang 2/5/2018
这可能会对您有所帮助,我修复了此解决方案的问题 stackoverflow.com/a/46554726/6831708

答:

0赞 Judit 9/15/2017 #1

试试这个:

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)

希望这有帮助!

1赞 clemens 9/15/2017 #2

应谨慎处理值,并可以创建一个扩展,将属性声明为:nilUIView@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 }
    }
}

这使得在属性检查器中设置边框颜色变得更加容易。

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

评论

1赞 Bryan Bryce 9/27/2017
这并不能回答为什么他们的解决方案不起作用的问题。
0赞 clemens 10/3/2017
@BryanBryce:对不起,上周我无法给出更详细的原因。我认为这是 Xcode 测试版中的一个问题。nirav 的扩展按预期工作。