我创建了一个名为 CircleView 的 UIView,它可以绘制一个圆圈。这是通过单击按钮添加的,并通过 UITapGestureRecognizer
位于另一个 View canvasView 中作为 subview 。
这是 Circle 的代码,它可以工作:
@IBAction func tapCircle(_ sender: UITapGestureRecognizer) {
let tapPoint2 = sender.location(in: canvasView)
let shapeCircle = CircleView(origin: tapPoint2)
canvasView.addSubview(shapeCircle)
shapeCircle.tag = 300
}
@IBAction func circleDraw(_ sender: UIButton) {
canvasView.isUserInteractionEnabled = true
tapCircle.isEnabled = true
tapRect.isEnabled = false
tapGRQ.isEnabled = false
canvasView.setNeedsDisplay()
}
一切都好,但我想知道是否可以通过单击按钮来更改此形状的颜色。非常感谢。
最佳答案
为形状数组创建全局变量
var circleShapes = [UIView]()
var squareShapes = [UIView]()
...
然后在创建新的 UIView
后将其附加到某个数组
let shapeCircle = CircleView(origin: tapPoint2)
canvasView.addSubview(shapeCircle)
circleShapes.append(shapeCircle)
...
现在只需更改特定数组内每个 View 的backgroundColor
circleShapes.forEach { $0.backgroundColor = /* UIColor */ }
...
<小时/>
或者,如果您的 canvasView
仅包含 shapes subview ,则每个 shape 都有自己的 UIView
子类,并且您想要要同时更改颜色,您可以根据形状的类型更改backgroundColor
canvasView.subviews.forEach {
switch $0 {
case is CircleView:
$0.backgroundColor = /* UIColor */
case is SquareView:
$0.backgroundColor = /* UIColor */
...
default:
continue
}
}
关于ios - 更改添加为 subview 的形状的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932995/