ios開發中常用的動畫方式一共有兩種,uiview動畫效果,還有核心動畫。當然,還有另外一種叫做隱式動畫,後續隨手會介紹隱式動畫。這裡主要介紹uiview動畫效果和簡單的核心動畫的使用。
1. 直接使用uiview的動畫
[uiview beginanimations:nil context:nil];
/*使用set方法設定動畫的屬性
//設定動畫的時間
[uiview setanimationduration:2.0];
//動畫的**方法中,還可以監聽動畫的完成
[uiview setanimationdelegate:self];
[uiview setanimationdidstopselector:@selector(stop)];
[uiview setanimationrepeatcount:5];
//動畫效果
self.imageview.transform = cgaffinetransformmaketranslation(100, 100);
//完成編輯動畫
[uiview commitanimations];
2. uiview動畫的**塊方式
[uiview animatewithduration:2.0 animations:^ completion:^(bool finished) completion:^(bool finished) {
nslog(@"動畫完成3");
4.核心動畫(核心動畫是新增到圖層上面的動畫效果)
//這是乙個組動畫的應用效果
//核心動畫只是乙個假象,動畫執行完之後相應的屬性還是沒變,要想保持動畫之後的屬性,應該在動畫結束後的**上設定,有兩種方式,一種是直接在動畫**結束後的位置設定,一種是在**方法中,有乙個動畫結束之後的方法
caanimationgroup *group = [caanimationgroup animation];
//設定**
// group.delegate = self;
//1.幀動畫
cakeyframeanimation *key = [cakeyframeanimation animation];
key.keypath = @"position";
//建立path
cgmutablepathref path = cgpathcreatemutable();
cgpathaddellipseinrect(path, null, cgrectmake(0, 100, self.view.bounds.size.width, self.view.bounds.size.width));
//如果要現實的話需要將path新增到圖形上下文,和渲染,這裡只需要乙個路徑,所以不用渲染
cgcontextaddpath(<#cgcontextref context#>, <#cgpathref path#>);
cgcontextstrokepath(<#cgcontextref c#>);
//使用path的缺點:不能指定起始路徑和結束路徑,(2016.1.5)
key.path = path;
//旋轉動畫
cabasicanimation *basic = [cabasicanimation animation];
basic.keypath = @"transform.rotation";
basic.byvalue = @(m_pi_4);
self.imageview.image = [uiimage imagenamed:@"5"];
//轉場動畫
catransition *cirani = [catransition animation];
//屬性
cirani.type = kcatransitionmovein;
cirani.subtype = kcatransitionfromright;
//新增到組動畫
group.animations = @[key,basic,cirani];
group.duration = 3;
//新增到view
[self.imageview.layer addanimation:group forkey:nil];
// caanimation的**方法,caanimation動畫執行完成之後的方法
- (void) animationdidstop:(caanimation *)anim finished:(bool)flag
self.imageview.layer.transform = catransform3dmakerotation(m_pi_4, 0, 0, 1);
self.imageview.layer.position = cgpointmake(self.view.bounds.size.width, self.view.bounds.size.width * 0.5 + 100);
nslog(@"動畫完成4");
iOS 開發 動畫
理論 uiview vs uilayer uiview只是calyer之上的封裝,更準確的來說,uiview是calyer的簡版封裝,加上事件處理的集合類。calayer是quartzcore庫內的類,是ios上最基本的繪製單元。其次,我們知道ios平台的cocoa touch 是源於os x平台的...
IOS開發 動畫1
import viewcontroller.h inte ce viewcontroller property weak,nonatomic iboutlet uiview currentview end implementation viewcontroller void viewdidload ...
iOS開發 動畫程式設計OC篇 (五)動畫組
一 組動畫簡單說明 caanimation的子類,可以儲存一組動畫物件,將caanimationgroup物件加入層後,組中所有動畫物件可以同時併發執行 屬性解析 animations 用來儲存一組動畫物件的nsarray 預設情況下,一組動畫物件是同時執行的,也可以通過設定動畫物件的beginti...