访问在 UIView 上绘制的 UIBezierPath
Access the UIBezierPath drawn on a UIView
我绘制了一个自定义形状的 UIView
,我使用以下答案将 drawRect(_:)
方法改写为三角形:
现在我想在用户点击该三角形时突出显示它。我想我可以在它上面用不同的颜色绘制另一个三角形,但我希望此视图稍后执行其他任务。自定义视图的边界与另一个视图重叠,所以我不能只更改整个 UIView's
背景颜色,只能更改 UIBezierPath's
背景颜色。如果您查看所附图片,所选视图的背景会覆盖附近的视图。我怎样才能只访问 UIBezierPath's
图层并更改它的颜色?
为视图提供点击手势识别器。现在你知道什么时候被点击了。您可以使用点击测试和您对形状的了解来了解点击是否在三角形内。
How can I access just the UIBezierPath's layer and change it's color?
如果你使用了 CAShapeLayer 方法,你就可以做到;您所要做的就是更改图层的 fillColor
(如果这就是突出显示对您的意义)。
但由于您选择使用 drawRect:
,所以没有 "UIBezierPath's layer"。您将不得不调用 setNeedsDisplay
,从而导致再次调用 drawRect:
— 这一次,您绘制填充的三角形(或任何突出显示对您意味着什么)。
我绘制了一个自定义形状的 UIView
,我使用以下答案将 drawRect(_:)
方法改写为三角形:
现在我想在用户点击该三角形时突出显示它。我想我可以在它上面用不同的颜色绘制另一个三角形,但我希望此视图稍后执行其他任务。自定义视图的边界与另一个视图重叠,所以我不能只更改整个 UIView's
背景颜色,只能更改 UIBezierPath's
背景颜色。如果您查看所附图片,所选视图的背景会覆盖附近的视图。我怎样才能只访问 UIBezierPath's
图层并更改它的颜色?
为视图提供点击手势识别器。现在你知道什么时候被点击了。您可以使用点击测试和您对形状的了解来了解点击是否在三角形内。
How can I access just the UIBezierPath's layer and change it's color?
如果你使用了 CAShapeLayer 方法,你就可以做到;您所要做的就是更改图层的 fillColor
(如果这就是突出显示对您的意义)。
但由于您选择使用 drawRect:
,所以没有 "UIBezierPath's layer"。您将不得不调用 setNeedsDisplay
,从而导致再次调用 drawRect:
— 这一次,您绘制填充的三角形(或任何突出显示对您意味着什么)。