2015-11-05 20 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