ios - 在 swift 4 中更改自定义绘图的颜色

标签 ios swift drawing

所以我有一个 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 的颜色。但它不会改变圆圈的颜色。圆圈保持白色。

有什么想法吗?

这是应用程序的屏幕截图: enter image description here

最佳答案

如果您在 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/

相关文章:

ios - 注册 UITableViewCell 不工作

ios - 使用 Autolayout 设置 UIButton titleEdgeInsets 和 imageEdgeInsets 很慢

ios - 正确的 : returning valid data of nil?

javascript - 警报消息出现问题

c# - 防止 System.Drawing.Graphics 更新

c# - 在自定义组合框中绘制图像

c# - 裁剪图像未正确裁剪

ios - UIViewPrintFormatter 为 UIWebView 内容插入额外的间距

ios - 如何在 MKMapView 中添加不同的图像而不是图钉?

ios - Swift Alamofire multipartFormData.appendBodyPart Bool?