2017-08-06 99 views
-1

我想繪製一個簡單的形狀作爲遊戲界面的一部分,大多數教程使用UIBezierPath來定義CAShapeLayer的路徑。但是,我注意到UIBezierPath已經有一個現有的fill functionUIBezierPath填充vs CAShapeLayer

這可能是一個愚蠢的問題,但使用它和使用單獨的CAShapeLayer繪製路徑有什麼區別?另外,哪一個更好?

回答

4

CAShapeLayer中的「CA」代表CoreAnimation

如果你想製作動畫,移動,操縱或不好,別的到UIBezierPath,你需要使用一個CALayer(或它的子類CAShapeLayer)。

UIBezierPaths是正確的東西,如果你想要的只是「繪製」 - 它通常在draw(rect:)完成。如果您願意,您也可以「重繪」。

但是,如果你想持久化(和控制)在形狀上,將該UIBezierPath變成CAShapeLayer

+0

如果我們想用顏色填充uibezierpath並渲染它,該怎麼辦?不是CAShapeLayer我們唯一的選擇? @dfd –

+1

我認爲最準確的答案是「它取決於」。你沒有使用 - 或者我暗示使用 - 單詞*動畫*,所以我會說「不」。所有視圖都有一個可以重寫的'draw(rect:)'函數,其中包含可以繪製「UIBezierPath」的上下文。此路徑可以包含* stroke *和* fill *顏色。如果您選擇*關閉貝塞爾路徑,它將用填充顏色填充封閉的路徑。是的,這是可能發生的一些事情 - 「CAShapeLayer」爲您提供了一個可以進行動畫處理的圖層,但它不是* only *選項。 – dfd

+0

我明白了,我的意思是我問過,因爲當我通過CAshapelayer從路徑創建一個形狀時,它很容易呈現它,但使用cgcontextref有時可能是一場噩夢。這就是爲什麼我被困在這個https://stackoverflow.com/q/48599949/3124848 @dfd我真的很感激,如果你能指導我。 –