2015-11-05 73 views
1

绘制UIBezierPath我画形UIView定制,我已改写了drawRect(_:)方法是利用这个答案的三角形:The Stackoverflow answer访问上一个UIView

现在我想,当用户点击它强调的是三角形。我想我可以用不同的颜色在其上绘制另一个三角形,但我希望此视图稍后可以执行其他任务。自定义视图的边界与另一个视图重叠,所以我不能只更改整个UIView's背景色,只有UIBezierPath's背景色。如果您查看附加图像,则选定视图的背景将覆盖附近的视图。如何访问UIBezierPath's图层并更改其颜色?

The overlapping background is the top right view.

+0

我没有在图像中找到任何三角形:P –

+0

T先生我兴奋起来,画了一个更复杂的形状:) – sl0anage

+0

所有的图纸都donw与一个贝塞尔路径或多个贝塞尔路径? –

回答

0

给视图敲击手势识别器。现在你知道什么时候它被挖掘。您可以使用命中测试和对形状的了解来了解水龙头是否在三角形内。

如何访问UIBezier路径图层并更改其颜色?

如果您使用过CAShapeLayer方法,您可以做到这一点;所有你需要做的就是改变图层的fillColor(如果这是突出显示你的意思)。

但是由于您选择使用drawRect:,因此没有“UIBezier路径的图层”。您将不得不呼叫setNeedsDisplay,从而导致再次调用drawRect: - 这次,您绘制了填充的三角形(或任何突出显示的方式)。

+0

视图现在有一个轻击手势识别器。你能指引我到哪里我可以阅读关于CAShapeLayer的地方吗?好像我应该继续这样做。 – sl0anage

+0

您已经链接到的问题有关于它的答案。 – matt

+0

但是使用'drawRect:'没有任何问题。我一直这样做。你只需要保持某种状态:路径在哪里,是否充满等等。这样,当你画画时,你在那一刻做所有正确的事情。当然,你可以维护多条路径。 – matt