2010-08-28 180 views
0

任何通過iTunes上的斯坦福CS193P課程的人都會從作業3(HelloPoly)中識別出這一點。對於那些不熟悉的人:iPhone:旋轉繪圖而不旋轉繪製它的視圖

我有一個稱爲polyView的自定義視圖,它是UIView子類PolygonView的一個實例。在這個視圖中,我使用CGContextDrawLinearGradient在整個矩形視圖上繪製顏色漸變。然後我使用CGContextDrawPath在polyView的邊界內描邊和填充一個多邊形。我在視圖(和多邊形)的中心有一個名爲nameLabel的UILabel,它顯示多邊形的名稱(三角形,四邊形,五邊形等)。所有這些都可以正常工作,並且執行所有操作的代碼位於PolygonView類的 - (void)drawRect方法中。

我遇到麻煩的地方還有一個額外的要求,即在視圖內旋轉多邊形以響應用戶的手勢。我使用CGAffineTransformRotate()來響應PolygonView類中的touchesBegan()和touchesMoved()事件,這也基本上起作用。但我只能旋轉整個polyView,而不僅僅是繪製它的多邊形。我相信我可以回去重新計算多邊形的路徑,並根據每個touchesMoved()事件重新繪製/填充路徑,但這樣做會很昂貴並且不是最好的方法。如何使用CGAffineTransformRotate旋轉多邊形,而不旋轉漸變填充視圖或中心的標籤?

或者有什麼方法可以創建一個圖層上的多邊形,我可以在所需的旋轉角度放置在背景polyView上?

感謝您給予初學者的幫助!

杜安

回答

0

你可以只是在做旋轉變換,然後繪製多邊形,並用CGContextRestoreGState(...)後恢復繪圖狀態之前做CGContextSaveGState(...),以免影響稍後在視圖中的任何其他繪圖。

+0

添加這些說明並沒有改變,但我確定這是因爲我試圖做一些不起作用的東西。我想我會嘗試採取CALayer方法。感謝您的建議。 – user433956 2010-08-30 13:19:56