2014-03-06 75 views
5

我如何使用CAGradientLayer最有效地周圍畫一個圓圈漸變/帶角度?使用CAGradientLayer一個角/圓弧梯度

我這個project的幫助下做出的一個。它使用位圖背景繪製但CAGradientLayer將更爲高效。

不幸的是,我只能想出如何使線性漸變它。目前

回答

3

梯度層只支持線性梯度。但是,如果您查看漸變圖層的界面,它將包含一個類型屬性。現在唯一定義的類型是kCAGradientLayerAxial(線性)。

事實上,有一個類型屬性表明,蘋果將在未來的某個日期添加更多的類型,徑向漸變看起來像是一個非常類似的增加。

你可能看創建CAGradientLayer的自己的自定義類,用於繪製徑向漸變以及線性。我在網上看過創建自定義CALayer子類的演示項目。

+0

嘿謝謝大家的響應,是啊,我剛纔的鏈接項目創建的CALayer的子類來渲染角梯度我上面顯示。不幸的是,這是相當緩慢,因爲它正在繪製到CGBitmapContext。 – Max

+1

不幸的是,kCAGradientLayerAxial自推出以來一直是唯一支持的漸變類型。所以,即使我們可以假定某些時候會添加對其他類型漸變的支持,但我不會很快發生。 –

+1

核心圖形具有CGContextDrawRadialGradient方法。有時間實現支持您自己的漸變類型的CAGradientLayer的自定義子類。你可以實現drawInContext:並調用CGContextDrawRadialGradient。它應該只需要幾行代碼和圖層上的一些額外屬性來實現。 –