【问题标题】:Runtime BorderColor is not working in Xcode 9运行时边框颜色在 Xcode 9 中不起作用
【发布时间】:2017-09-15 05:48:19
【问题描述】:

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

它只显示默认的黑色。

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

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

【问题讨论】:

  • 您不需要扩展。您可以直接从 Xcode 的 Identity Inspector 访问层的borderColor
  • 我认为没有这种功能。
  • @macmoonshine : 我猜你可以在用户定义的运行时属性部分指定 layer.borderColor
  • @SandeepBhandari,但它只显示黑色边框
  • 这可能对你有帮助,我解决了这个解决方案的问题stackoverflow.com/a/46554726/6831708

标签: ios swift xcode


【解决方案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 }
    }
}

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

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

【讨论】:

  • 这并没有回答为什么他们的解决方案不起作用的问题。
  • @BryanBryce:抱歉,上周我无法给出更详细的原因。我认为这是 Xcode 测试版中的一个问题。 nirav 的扩展按预期工作。
【解决方案2】:

试试这个:

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)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 2021-12-31
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2021-08-16
    • 2022-12-21
    相关资源
    最近更新 更多