ios - 更改添加为 subview 的形状的颜色

标签 ios swift

我创建了一个名为 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/

相关文章:

ios - 从 iPhone 5 项目到 iPhone 6 和 Plus

android - 对于以 SQLite 和 Azure SQL 数据库作为中央存储的在线/离线多客户端移动应用程序来说,最佳主键策略是什么?

javascript - 从 Windows Azure 移动服务中的读取请求获取 ID

swift - 在嵌套容器中查找后代按钮

ios - UIButton 没有更新?

ios - Swift iOS - 如何从 AVPlayerItemStatus 访问错误?

swift - 以下 block 属性的 swift 属性 block 声明是什么?

ios - 如何从 CNContactStore ios 获取 RecordID

ios - Swift/MotionKit.framework/如何更新标签

ios - Firebase Swift iOS 取回图像时的图像缓存问题