所以我有一个 slider 可以更改 UIColor 的色调值。我希望我的自定义绘图具有完全这种颜色。
我的自定义绘图类如下所示:
class CircleView: UIView {
var color = UIColor().white {
didSet {
setNeedsDisplay()
}
}
override func draw(_ rect: CGRect) {
if let context = UIGraphicsGetCurrentContext() {
context.addArc(center: CGPoint(x: bounds.midX, y: bounds.midY), radius: bounds.height / 2, startAngle: 0, endAngle: 2*CGFloat.pi, clockwise: true)
color.setFill()
context.fillPath()
}
}
}
在我的 viewController 中,我有一个属性观察器,它应该改变我的自定义绘图类绘制的圆的颜色:
我的属性:
private var hueValue: Float = 0.0 {
didSet {
color = UIColor(hue: CGFloat(hueValue), saturation: 1, brightness: 1, alpha: 1)
backgroundView.backgroundColor = color
circle.color = color
}
}
var color = UIColor()
var circle = CircleView()
还有我的 Action 方法:
@IBAction func colorSliderChanged(_ sender: UISlider) {
hueValue = sender.value
}
Action 方法更改色调值,从而更改背景 View 的颜色。但它不会改变圆圈的颜色。圆圈保持白色。
有什么想法吗?
最佳答案
如果您在 Storyboard 中添加了一个 UIView
,并且您已将其自定义类设置为 CircleView
,但您未创建一个@IBOutlet
连接到它,您的代码无权访问该 View 。
如果您有 var circle = CircleView()
但您还没有将that View 添加到您的 View 中,则您对 circle
所做的任何更改都不会显示在屏幕上。
在您的 Storyboard中,添加您的UIView
,将其类更改为CircleView
,然后然后按住ctrl 并拖动以创建您的@ IBOutlet
。 Xcode 会自动将它设置为 @IBOutlet weak var circle: CircleView!
,你可以设置它的颜色(不要忘记删除 var circle = CricleView()
行).
关于ios - 在 swift 4 中更改自定义绘图的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49630649/