IOS開發動畫總結

2022-09-04 07:18:11 字數 2468 閱讀 3551

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...