【发布时间】:2021-10-30 23:08:21
【问题描述】:
我目前正在构建一个颜色选择器应用程序,该应用程序将从用户的图像中选择一种颜色。
我的选择器视图的背景颜色现在设置为 .clear 但我希望用它指向的颜色填充它。
| My current picker view | What I wish to make |
|---|---|
| My curent picker view | What I wish to make |
但是,在平移选取器视图时,背景颜色不会更新。
这很奇怪,因为更新边框颜色有效。
我有这样的东西。('var color' 的值是从 superview 注入的)
背景颜色不更新有什么原因吗?
提前非常感谢! :)
protocol ColorPickerDelegate {
func didMoveImagePicker(_ view: ColorPickerView, didMoveImagePicker location: CGPoint)
}
final class ColorPickerView: BaseView {
//MARK:- View
private var borderView: UIView = {
let view = UIView()
view.layer.borderWidth = 4
view.layer.borderColor = UIColor.white.cgColor
view.layer.cornerRadius = 20
return view
}()
//MARK:- Properties
var color: UIColor?
var delegate: ColorPickerDelegate?
...
//MARK:- Override BaseView
override func setInit() {
bounds.size = CGSize(width: 40, height: 40)
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panColorPicker(_:)))
addGestureRecognizer(panGestureRecognizer)
...
}
...
@objc func panColorPicker(_ sender: UIPanGestureRecognizer) {
delegate?.didMoveImagePicker(self, didMoveImagePicker: CGPoint(x: center.x, y: center.y))
// borderView.layer.borderColor = color?.cgColor : this code changes the color of the border when the view is panned
borderView.backgroundColor = color // this code even stops updating the variable 'color'
}
}
【问题讨论】: