那麼接下來就是如何用coreanimation實現乙個進度條控制項了。
首先呢,讓我們建立乙個繼承自cashapelayer的wkprogressbarlayer。
wkprogressbarlayer預設自身的bounds就是整個進度條的大小。
@inte***ce wkprogressbarlayer : cashapelayer
@end
為了方便外部呼叫,首先在wkprogressbarlayer.h中定義列舉來表明動畫的四個狀態
typedef ns_enum(nsinteger, wkanimationstatus) ;
接下來,定義外部呼叫的動畫介面
@inte***ce wkprogressbarlayer : cashapelayer
@property (nonatomic, assign, readonly) wkanimationstatus animatingstatus;//狀態
/** 開始動畫
@param duration 動畫最大時長
*/- (void)beginanimationwithduration:(cgfloat)duration;
/** 暫停
*/- (void)pauseanimation;
/** 恢復
*/- (void)resumeanimation;
/** 重新開始動畫
@param progress 從哪個進度開始
@param duration 動畫最大時長
*/- (void)restartanimationwithprogress:(cgfloat)progress duration:(nstimeinterval)duration;
@end
然後,我們在.m實現核心的動畫開始方法startanimtionwithbeginprogress:duration:,詳細解釋見**
- (void)startanimtionwithbeginprogress:(cgfloat)beginprogress duration:(nstimeinterval)duration
然後呢,需要在動畫的delegate與暫停、恢復動畫的方法中分別修改動畫的狀態
- (void)pauseanimation
- (void)resumeanimation
#pragma mark - caanimationdelegate
/* called when the animation begins its active duration. */
- (void)animationdidstart:(caanimation *)anim
}- (void)animationdidstop:(caanimation *)anim finished:(bool)flag
}
至此,進度條layer就完成了,現在建立乙個控制器來做測試
首先在storyboard擺上兩個按鈕,分別是開始與重置動畫(介面搭建很簡單,詳情見demo)
然後在viewdidload中新增progresslayer
- (void)viewdidload
接下來,就是動畫開始與重置響應
- (ibaction)startorpauseaction:(uibutton *)sender
break;
case wkanimationstatusanimating:
break;
case wkanimationstatuspause:
break;
case wkanimationstatuscomplete:
break;
default:
break;
}sender.selected = !sender.selected;
}- (ibaction)resetaction:(uibutton *)sender
以上就是**主體了,接下來,讓我們看看效果
利用CoreAnimation實現乙個時間的進度條
那麼接下來就是如何用coreanimation實現乙個進度條控制項了。首先呢,讓我們建立乙個繼承自cashapelayer的wkprogressbarlayer。wkprogressbarlayer預設自身的bounds就是整個進度條的大小。inte ce wkprogressbarlayer ca...
Core Animation動畫概述
core animation動畫概述 1 概述 在ios中,圖形可分為以下幾個層次 越上層,封裝程度越高,動畫實現越簡潔越簡單,但是自由度越低。本文著重介紹core animation層的動畫實現方案。2 動畫概念類 在ios中,展示動畫可以模擬於顯示生活中的 拍電影 拍電影有三大要素 演員 劇本 ...
IOS動畫Core Animation詳解
在ios中如果使用普通的動畫則可以使用uikit提供的動畫方式來實現,如果想實現更複雜的效果,則需要使用core animation了。下面詳解各種型別動畫的使用方式 plain view plain copy void animationofuikit plain view plain copy ...