先上一下效果圖
1.首先通過CAShapeLayer和貝塞爾曲線搭配的方法,創(chuàng)建出圓形進度條
先簡單的介紹下CAShapeLayer
1,CAShapeLayer繼承自CALayer,可使用CALayer的所有屬性
2,CAShapeLayer需要和貝塞爾曲線配合使用才有意義培己。
Shape:形狀
貝塞爾曲線可以為其提供形狀,而單獨使用CAShapeLayer是沒有任何意義的热鞍。
3,使用CAShapeLayer與貝塞爾曲線可以實現(xiàn)不在view的DrawRect方法中畫出一些想要的圖形
關(guān)于CAShapeLayer和DrawRect的比較
DrawRect:DrawRect屬于CoreGraphic框架书劝,占用CPU损痰,消耗性能大
CAShapeLayer:CAShapeLayer屬于CoreAnimation框架列粪,通過GPU來渲染圖形审磁,節(jié)省性能。動畫渲染直接提交給手機GPU岂座,不消耗內(nèi)存
貝塞爾曲線與CAShapeLayer的關(guān)系
1态蒂,CAShapeLayer中shape代表形狀的意思,所以需要形狀才能生效
2费什,貝塞爾曲線可以創(chuàng)建基于矢量的路徑
3钾恢,貝塞爾曲線給CAShapeLayer提供路徑,CAShapeLayer在提供的路徑中進行渲染鸳址。路徑會閉環(huán)瘩蚪,所以繪制出了Shape
4,用于CAShapeLayer的貝塞爾曲線作為Path稿黍,其path是一個首尾相接的閉環(huán)的曲線疹瘦,即使該貝塞爾曲線不是一個閉環(huán)的曲線
參考文章基于CAShapeLayer和貝塞爾曲線的圓形進度條動畫【原創(chuàng)】 – IT985博客
2.為進度條實現(xiàn)顏色漸變
這里我們需要使用到CAGradientLayer,CAGradientLayer是一個用來畫顏色漸變的層闻察。我們先用CAGradientLayer做出漸變效果拱礁,然后把ShapeLayer作為GradientLayer的Mask來截取出需要的部分,以此達到漸變的進度條效果辕漂。
這里把層分為左半部分和右上部分和右下部分(自己決定怎么分區(qū)呢灶,也可以左右各一部分或者左右各兩部分。推薦左右各一部分就行钉嘹,因為顏色數(shù)組可以增加數(shù)量)
3.進度條鸯乃、水波動畫
進度條動畫與頭部原點動畫一起執(zhí)行
水波動畫為 一張水波圖片從頂部血像滑進了,導指定高度在執(zhí)行CABasicAnimation動畫
限于作者表達能力有限跋涣,技術(shù)說明也不多缨睡,如有紕漏,希望各位讀者多多指正陈辱。
demo github下載地址:GitHub - coolegeMa/firstProgress