【发布时间】:2015-09-28 15:44:41
【问题描述】:
我希望有人能帮助我弄清楚为什么我很难将变量传递给我的 NSView。本质上,我正在尝试设置一个变量 (myColor) 来设置我正在绘制的圆圈的颜色。代码看起来像这样;
import Cocoa
class Circle: NSView {
var myColor:NSColor? = NSColor.greenColor()
lazy var innerRing: CAShapeLayer = {
let innerRing = CAShapeLayer()
let circleRadius: CGFloat = 20.0
innerRing.frame = self.bounds
var circleFrame = CGRect(x: 0, y: 0, width: circleRadius, height: circleRadius)
circleFrame.origin.x = CGRectGetMidX(self.bounds) - CGRectGetMidX(circleFrame)
circleFrame.origin.y = CGRectGetMidY(self.bounds) - CGRectGetMidY(circleFrame)
innerRing.path = CGPathCreateWithEllipseInRect(circleFrame, nil)
innerRing.lineWidth = 3.0
innerRing.strokeStart = 0.0
innerRing.strokeEnd = 0.75
innerRing.fillColor = NSColor.clearColor().CGColor
innerRing.strokeColor = myColor.CGColor
//THIS LINE THROWS THE ERROR
return innerRing
}()
override func awakeFromNib() {
super.awakeFromNib()
wantsLayer = true
layer = CALayer()
layer?.addSublayer(innerRing)
}
}
我不断收到错误Instance member 'myColor' cannot be used on type 'Circle'。如果我将我的strokeColor 设置为简单的东西,比如 NSColor.blueColor().CGColor,它编译不会出现问题。但是我以前从未遇到过设置变量的问题,而且我不确定自己做错了什么。
编辑:更新解决方案
import Cocoa
class Circle: NSView {
lazy var innerRing: CAShapeLayer = {
let innerRing = CAShapeLayer()
let circleRadius: CGFloat = 20.0
innerRing.frame = self.bounds
var circleFrame = CGRect(x: 0, y: 0, width: circleRadius, height: circleRadius)
circleFrame.origin.x = CGRectGetMidX(self.bounds) - CGRectGetMidX(circleFrame)
circleFrame.origin.y = CGRectGetMidY(self.bounds) - CGRectGetMidY(circleFrame)
innerRing.path = CGPathCreateWithEllipseInRect(circleFrame, nil)
innerRing.lineWidth = 2.0
innerRing.strokeStart = 0.0
innerRing.strokeEnd = 0.75
innerRing.fillColor = NSColor.greenColor().CGColor
innerRing.strokeColor = NSColor.blackColor().CGColor
return innerRing
}()
override func awakeFromNib() {
super.awakeFromNib()
wantsLayer = true
layer = CALayer()
layer?.addSublayer(innerRing)
}
}
然后我使用 cirleView.innerRing.strokeColor = NSColor.redColor().CGColor 从另一个视图控制器调用它,完全不需要单独的 myColor 变量。
【问题讨论】: