swift - 在 Swift 中添加到 View 后如何更改 UIBezierPath 的颜色?

标签 swift uibezierpath swift2

我正在从事一个在 View 中绘制形状的项目。 UIBezierPath 用于创建形状并添加到 View 中。

var frame: CGRect = bounds
var strokeColor: UIColor = UIColor.lightGrayColor()
var ovalPath = UIBezierPath(ovalInRect: CGRectMake(frame.minX + floor((frame.width - 79) * 0.50000 + 0.5), frame.minY + floor((frame.height - 79) * 0.50000 + 0.5), 79, 79))
UIColor.whiteColor().setFill()
ovalPath.fill()
strokeColor.setStroke()
ovalPath.lineWidth = 1.5
ovalPath.stroke()

我的问题是:如何通过点击更改形状的颜色?

最佳答案

我假设这是在 drawRect 方法中?只需更新 strokeColor,然后在 View 上调用 setNeedsDisplay(),这将再次触发 drawRect 的调用。

就我个人而言,我会将 strokeColor 放在具有 didSet 的属性中,而不是 drawRect 方法的局部变量中。然后,当我更新 strokeColor 时,它会自动触发 View 的重绘:

var strokeColor: UIColor? {
    didSet { setNeedsDisplay() }
}

关于swift - 在 Swift 中添加到 View 后如何更改 UIBezierPath 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055504/

相关文章:

ios - 在主视图 Controller 中单击后更新外部 View Controller 中的 UITextField

ios - TableView 中的控制 "Program Flow"

Swift 在特定条件下基于两个数组创建新数组

ios - UITableView - 仅在触摸时突出显示单个单元格

ios - 如何获取 UIImage 中形状的 UIBezierPath 或以特定形状裁剪 UIImage

uibutton - 长按并点击多个 UIButton 的识别器

所选类实例的 Swift 扩展

ios - 获取 UIBezierPath IOS 的面积和周长

swift - CAShapeLayer 圆圈在 iPhone 6 上不显示,但它可以使用相同的代码在 iPhone 5 上工作

ios - 如何在 Swift/ObjC 中实现将文本/媒体共享到聊天应用程序中的能力