iOS 貝塞爾曲線應(yīng)用

先簡(jiǎn)單的介紹下CAShapeLayer

1,CAShapeLayer繼承自CALayer,可使用CALayer的所有屬性

2,CAShapeLayer需要和貝塞爾曲線配合使用才有意義。

Shape:形狀

貝塞爾曲線可以為其提供形狀,而單獨(dú)使用CAShapeLayer是沒有任何意義的。

3,使用CAShapeLayer與貝塞爾曲線可以實(shí)現(xiàn)不在view的DrawRect方法中畫出一些想要的圖形

關(guān)于CAShapeLayer和DrawRect的比較

DrawRect:DrawRect屬于CoreGraphic框架,占用CPU,消耗性能大

CAShapeLayer:CAShapeLayer屬于CoreAnimation框架,通過GPU來渲染圖形,節(jié)省性能。動(dòng)畫渲染直接提交給手機(jī)GPU,不消耗內(nèi)存

貝塞爾曲線與CAShapeLayer的關(guān)系

1,CAShapeLayer中shape代表形狀的意思,所以需要形狀才能生效

2,貝塞爾曲線可以創(chuàng)建基于矢量的路徑

3,貝塞爾曲線給CAShapeLayer提供路徑,CAShapeLayer在提供的路徑中進(jìn)行渲染。路徑會(huì)閉環(huán),所以繪制出了Shape

4,用于CAShapeLayer的貝塞爾曲線作為Path,其path是一個(gè)首尾相接的閉環(huán)的曲線,即使該貝塞爾曲線不是一個(gè)閉環(huán)的曲線


基于CAShapeLayer和貝塞爾曲線的圓形進(jìn)度條動(dòng)畫


iOS UIBezierPath類 介紹? (更多內(nèi)容請(qǐng)移步原文)

使用UIBezierPath類可以創(chuàng)建基于矢量的路徑,這個(gè)類在UIKit中。此類是Core Graphics框架關(guān)于path的一個(gè)封裝。使用此類可以定義簡(jiǎn)單的形狀,如橢圓或者矩形,或者有多個(gè)直線和曲線段組成的形狀。

Bezier Path 基礎(chǔ)

UIBezierPath對(duì)象是CGPathRef數(shù)據(jù)類型的封裝。path如果是基于矢量形狀的,都用直線和曲線段去創(chuàng)建。我們使用直線段去創(chuàng)建矩形和多邊形,使用曲線段去創(chuàng)建?。╝rc),圓或者其他復(fù)雜的曲線形狀。每一段都包括一個(gè)或者多個(gè)點(diǎn),繪圖命令定義如何去詮釋這些點(diǎn)。每一個(gè)直線段或者曲線段的結(jié)束的地方是下一個(gè)的開始的地方。每一個(gè)連接的直線或者曲線段的集合成為subpath。一個(gè)UIBezierPath對(duì)象定義一個(gè)完整的路徑包括一個(gè)或者多個(gè)subpaths。

創(chuàng)建和使用一個(gè)path對(duì)象的過程是分開的。創(chuàng)建path是第一步,包含一下步驟:

(1)創(chuàng)建一個(gè)Bezierpath對(duì)象。

(2)使用方法moveToPoint:去設(shè)置初始線段的起點(diǎn)。

(3)添加line或者curve去定義一個(gè)或者多個(gè)subpaths。

(4)改變UIBezierPath對(duì)象跟繪圖相關(guān)的屬性。

例如,我們可以設(shè)置stroked path的屬性lineWidth和lineJoinStyle。也可以設(shè)置filled path的屬性u(píng)sesEvenOddFillRule。

當(dāng)創(chuàng)建path,我們應(yīng)該管理path上面的點(diǎn)相對(duì)于原點(diǎn)(0,0),這樣我們?cè)陔S后就可以很容易的移動(dòng)path了。為了繪制path對(duì)象,我們要用到stroke和fill方法。這些方法在current graphic context下渲染path的line和curve段。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至 http://blog.csdn.net/guo_hongjun1611/article/details/7...
    小地閱讀 3,207評(píng)論 1 6
  • TopicList 一, UIBezierPath 簡(jiǎn)介 二, UIBezierPath 初始化方法 三, UIB...
    爨鄉(xiāng)的云閱讀 24,826評(píng)論 4 56
  • 談?wù)勜惾麪柷€ 最近在做項(xiàng)目的時(shí)候,需要用到一個(gè)動(dòng)畫,非常簡(jiǎn)單的動(dòng)畫,簡(jiǎn)單到就是直接對(duì)一個(gè)View做平移… 然而雖...
    雨潤(rùn)聽潮閱讀 6,306評(píng)論 1 16
  • 如果要烘焙某一個(gè)GameObject,步驟為以下幾條: 1.將燈光調(diào)整好。注意,烘焙之后亮度會(huì)降低。 2.需要烘焙...
    不過一書生閱讀 1,144評(píng)論 0 1
  • 居然真的讓我找到了這樣可以專門寫字的地方。 后天就要考雅思的我,看了一整個(gè)上午的程又青和李大仁,沒有一點(diǎn)緊迫感。 ...
    Pi_Q閱讀 250評(píng)論 0 0

友情鏈接更多精彩內(nèi)容