Xcode 9 borderColor在用户定义的运行时属性中不起作用

Pau*_*erg 1 calayer ios ios11 xcode9-beta xcode9

我正在使用此CALayer扩展程序:

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

    get {
        return UIColor(cgColor: self.borderColor!)
    }
}
Run Code Online (Sandbox Code Playgroud)

我想也许是因为这个扩展我borderColor从页面底部的提交按钮不会变为白色(我想要它):

在此输入图像描述

但不,我联系了一个IBOutlet并尝试直接设置这样的颜色:

submitButton.layer.borderColor = UIColor.white.cgColor
Run Code Online (Sandbox Code Playgroud)

它是否存在viewDidLoad,viewWillAppear并且viewDidAppear因为我知道在最后的大更新(iOS 10)中,帧渲染从根本上改变了(1000x1000帧的东西),现在可能还有一些类似的改动.但是没有运气.

我在iOS 9,10和11中测试过.它不是关于操作系统,而是关于环境.我正在使用Xcode 9 Beta 5.任何想法如何解决?

小智 10

尝试用@objc这样的方式装饰你的var声明:

@objc var borderUIColor: UIColor {
...
}
Run Code Online (Sandbox Code Playgroud)

这应该可以解决你的问题


Pau*_*erg 5

清项目,删除所得到的数据和代码的工作,现在,在任一viewDidLoad,viewWillAppear或viewDidAppear。

问题显然与用户定义的运行时属性有关。Xcode 9在这里不再接受扩展名vars。或者至少是Beta 5版本。

编辑:的确,添加@objc解决了这个问题。