自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS動畫總結(jié):UIView動畫

移動開發(fā) iOS
UIKit直接將動畫集成到UIView類中,實現(xiàn)簡單動畫的創(chuàng)建過程。UIView類定義了幾個內(nèi)在支持動畫的屬性聲明,當(dāng)這些屬性發(fā)生改變時,視圖為其變化過程提供內(nèi)建的動畫支持。

執(zhí)行動畫所需要的工作由UIView類自動完成,但仍要在希望執(zhí)行動畫時通知視圖,為此需要將改變屬性的代碼包裝到一個代碼塊中。 

1.UIView動畫具體創(chuàng)建方法 

- (void)buttonPressed 

//  交換本視圖控制器中2個view位置 
    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; 
    //UIView開始動畫,第一個參數(shù)是動畫的標(biāo)識,第二個參數(shù)附加的應(yīng)用程序信息用來傳遞給動畫代理消息 
    [UIView beginAnimations:@"View Flip" context:nil]; 
    //動畫持續(xù)時間 
    [UIView setAnimationDuration:1.25]; 
    //設(shè)置動畫的回調(diào)函數(shù),設(shè)置后可以使用回調(diào)方法 
    [UIView setAnimationDelegate:self]; 
    //設(shè)置動畫曲線,控制動畫速度 
    [UIView  setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    //設(shè)置動畫方式,并指出動畫發(fā)生的位置 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view  cache:YES]; 
    //提交UIView動畫 
    [UIView commitAnimations]; 


- (void)viewDidLoad 

    [super viewDidLoad]; 
    //主要功能通過UIView動畫完成2個試圖控制器的切換 
     
    self.blueController = [[BlueViewController alloc] initWithNibName:nil bundle:nil]; 
    //設(shè)置導(dǎo)航控制器view的大小占整個屏幕 
    [self.blueController.view setFrame:CGRectMake(0, 0, self.view.frame.size.width , self.view.frame.size.height)]; 
     
    self.yellowController = [[YellowController alloc]initWithNibName:nil bundle:nil ]; 
    [self.yellowController.view setFrame:CGRectMake(0, 0, self.view.frame.size.width , self.view.frame.size.height)]; 
    //將2個控制器view插入到目前導(dǎo)航控制器視圖上,yellowController后插入,顯示在最前面 
    [self.view insertSubview:self.blueController.view atIndex:0]; 
    [self.view insertSubview:self.yellowController.view atIndex:1]; 
    //創(chuàng)建導(dǎo)航控制器右按鈕,按鈕名字叫next 
    //添加buttonPressed 事件 
    self.rightBarItem = [[UIBarButtonItem alloc] initWithTitle:@"next" style:UIBarButtonItemStylePlain target:self action:@selector(buttonPressed)]; 
    //將按鈕添加到導(dǎo)航控制器默認(rèn)右按鈕上 
    self.navigationItem.rightBarButtonItem = self.rightBarItem; 


有個問題:如果動畫不放在按鈕事件中,直接放到viewDidLoad里,程序首先執(zhí)行這個controller,這時動畫是不會顯示的。 

原因:出現(xiàn)這個問題是因為開機時候系統(tǒng)有個動畫,系統(tǒng)動畫和這個動畫重復(fù)了。 

解決方案: 

1。將動畫寫在按鈕事件中 

2。利用定時器。 


轉(zhuǎn):UIView動畫更具體講解; http://wsqwsq000.iteye.com/blog/1189183 

areAnimationsEnabled 

返回一個布爾值表示動畫是否結(jié)束。 
+ (BOOL)areAnimationsEnabled 
返回值 
如果動畫結(jié)束返回YES,否則NO。

beginAnimations:context: 

開始一個動畫塊 
+ (void)beginAnimations:(NSString *)animationID context:(void *)context 
參數(shù) 
animationID 
動畫塊內(nèi)部應(yīng)用程序標(biāo)識用來傳遞給動畫代理消息-這個選擇器運用setAnimationWillStartSelector:和setAnimationDidStopSelector: 方法來設(shè)置。 
context 
附加的應(yīng)用程序信息用來傳遞給動畫代理消息-這個選擇器使用setAnimationWillStartSelector: 和setAnimationDidStopSelector: 方法。 
討論 
這個值改變是因為設(shè)置了一些需要在動畫塊中產(chǎn)生動畫的屬性。動畫塊可以被嵌套。如果在沒有在動畫塊中調(diào)用那么setAnimation類方法將什么都不做。使用 beginAnimations:context:來開始一個動畫塊并用commitAnimations類方法來結(jié)束一個動畫塊。

commitAnimations 

結(jié)束一個動畫塊并開始當(dāng)他在動畫塊外時。 
+ (void)commitAnimations 
討論 
如果當(dāng)前的動畫塊是最外層的動畫塊,當(dāng)應(yīng)用程序返回到循環(huán)運行時開始動畫塊。動畫在一個獨立的線程中所有應(yīng)用程序不會中斷。使用這個方法,多個動畫可以被實現(xiàn)。查看setAnimationBeginsFromCurrentState:來了解如果開始一個動畫當(dāng)另外一個動畫在播放的時候。 

layerClass 

返回類用來創(chuàng)建這一個本類的layer實例對象。 
+ (Class)layerClass 
返回值 
一個用來創(chuàng)建視圖layer的類 
討論 
重寫子類來指定一個自定義類用來顯示。當(dāng)在創(chuàng)建視圖layer時候調(diào)用。默認(rèn)的值是CALayer類對象。 

setAnimationBeginsFromCurrentState 

設(shè)置動畫從當(dāng)前狀態(tài)開始播放。 
+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState 
參數(shù) 
fromCurrentState 
YES如果動畫需要從他們當(dāng)前狀態(tài)開始播放。否則為NO。 
討論 
如果設(shè)置為YES那么當(dāng)動畫在運行過程中,當(dāng)前視圖的位置將會作為新的動畫的開始狀態(tài)。如果設(shè)置為NO,當(dāng)前動畫結(jié)束前新動畫將使用視圖最後狀態(tài)的位置作 為開始狀態(tài)。這個方法將不會做任何事情如果動畫沒有運行或者沒有在動畫塊外調(diào)用。使用beginAnimations:context:類方法來開始并用 commitAnimations類方法來結(jié)束動畫塊。默認(rèn)值是NO。 

setAnimationCurve 

設(shè)置動畫塊中的動畫屬性變化的曲線。 
+ (void)setAnimationCurve:(UIViewAnimationCurve)curve 
討論 
動畫曲線是動畫運行過程中相對的速度。如果在動畫塊外調(diào)用這個方法將會無效。使用 beginAnimations:context:類方法來開始動畫塊并用commitAnimations來結(jié)束動畫塊。默認(rèn)動畫曲線的值是 UIViewAnimationCurveEaseInOut。 

setAnimationDelay: 

在動畫塊中設(shè)置動畫的延遲屬性(以秒為單位) 
+ (void)setAnimationDelay:(NSTimeInterval)delay 
討論 
這個方法在動畫塊外調(diào)用無效。使用beginAnimations:context: 類方法開始一個動畫塊并用commitAnimations類方法結(jié)束動畫塊。默認(rèn)的動畫延遲是0.0秒。 

setAnimationDelegate: 

設(shè)置動畫消息的代理。 
+ (void)setAnimationDelegate:(id)delegate 
參數(shù) 
delegate 
你可以用setAnimationWillStartSelector:和setAnimationDidStopSelector: 方法來設(shè)置接收代理消息的對象。 
討論 
這個方法在動畫塊外沒有任何效果。使用beginAnimations:context:類方法開始一個動畫塊并用commitAnimations類方法結(jié)束一個動畫塊。默認(rèn)值是nil 

setAnimationDidStopSelector: 

設(shè)置消息給動畫代理當(dāng)動畫停止的時候。 
+ (void)setAnimationDidStopSelector:(SEL)selector 
參數(shù) 
selector 
當(dāng)動畫結(jié)束的時候發(fā)送給動畫代理。默認(rèn)值是NULL。這個選擇者須有下面方法的簽名:animationFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context。 
animationID 
一個應(yīng)用程序提供的標(biāo)識符。和傳給beginAnimations:context: 相同的參數(shù)。這個參數(shù)可以為空。 
finished 
如果動畫在停止前完成那返回YES;否則就是NO。 
context 
一個可選的應(yīng)用程序內(nèi)容提供者。和beginAnimations:context: 方法相同的參數(shù)??梢詾榭?。 
討論 
這個方法在動畫塊外沒有任何效果。使用beginAnimations:context: 類方法來開始一個動畫塊并用commitAnimations類方法結(jié)束。默認(rèn)值是NULL。 

setAnimationDuration: 

設(shè)置動畫塊中的動畫持續(xù)時間(用秒) 
+ (void)setAnimationDuration:(NSTimeInterval)duration 
參數(shù) 
duration 
一段動畫持續(xù)的時間。 
討論 
這個方法在動畫塊外沒有效果。使用beginAnimations:context: 類方法來開始一個動畫塊并用commitAnimations類方法來結(jié)束一個動畫塊。默認(rèn)值是0.2。 

setAnimationRepeatAutoreverses: 
設(shè)置動畫塊中的動畫效果是否自動重復(fù)播放。 
+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses 
參數(shù) 
repeatAutoreverses 
如果動畫自動重復(fù)就是YES否則就是NO。 
討論 
自動重復(fù)是當(dāng)動畫向前播放結(jié)束後再重頭開始播放。使用setAnimationRepeatCount: 類方法來指定動畫自動重播的時間。如果重復(fù)數(shù)為0或者在動畫塊外那將沒有任何效果。使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations方法來結(jié)束一個動畫塊。默認(rèn)值是NO。 

setAnimationRepeatCount: 

設(shè)置動畫在動畫模塊中的重復(fù)次數(shù) 
+ (void)setAnimationRepeatCount:(float)repeatCount 
參數(shù) 
repeatCount 
動畫重復(fù)的次數(shù),這個值可以是分?jǐn)?shù)。 
討論 
這個屬性在動畫塊外沒有任何作用。使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations類方法來結(jié)束。默認(rèn)動畫不循環(huán)。 

setAnimationsEnabled: 
設(shè)置是否激活動畫 
+ (void)setAnimationsEnabled:(BOOL)enabled 
參數(shù) 
enabled 
如果是YES那就激活動畫;否則就是NO 
討論 
當(dāng)動畫參數(shù)沒有被激活那么動畫屬性的改變將被忽略。默認(rèn)動畫是被激活的。 

setAnimationStartDate: 
設(shè)置在動畫塊內(nèi)部動畫屬性改變的開始時間 
+ (void)setAnimationStartDate:(NSDate *)startTime 
參數(shù) 
startTime 
一個開始動畫的時間 
討論 
使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations類方法來結(jié)束動畫塊。默認(rèn)的開始時間值由CFAbsoluteTimeGetCurrent方法來返回。 

setAnimationTransition:forView:cache: 
在動畫塊中為視圖設(shè)置過渡 
+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache 
參數(shù) 
transition 
把一個過渡效果應(yīng)用到視圖中。可能的值定義在UIViewAnimationTransition中。 
view 
需要過渡的視圖對象。 
cache 
如果是YES,那么在開始和結(jié)束圖片視圖渲染一次并在動畫中創(chuàng)建幀;否則,視圖將會在每一幀都渲染。例如緩存,你不需要在視圖轉(zhuǎn)變中不停的更新,你只需要等到轉(zhuǎn)換完成再去更新視圖。 
討論 
如果你想要在轉(zhuǎn)變過程中改變視圖的外貌。舉個例子,文件從一個視圖到另一個視圖,然後使用一個UIView子類的容器視圖,如下: 
1.Begin an animation block. 
2.Set the transition on the container view. 
3.Remove the subview from the container view. 
4.Add the new subview to the container view. 
5.Commit the animation block. 
1.開始一個動畫塊。 2.在容器視圖中設(shè)置轉(zhuǎn)換。 3.在容器視圖中移除子視圖。 4.在容器視圖中添加子視圖。 5.結(jié)束動畫塊。 

setAnimationWillStartSelector: 

當(dāng)動畫開始時發(fā)送一條消息到動畫代理 
+ (void)setAnimationWillStartSelector:(SEL)selector 
參數(shù) 
selector 
在動畫開始前向動畫代理發(fā)送消息。默認(rèn)值是NULL。這個selector必須由和beginAnimations:context: 方法相同的參數(shù),一個任選的程序標(biāo)識和內(nèi)容。這些參數(shù)都可以是nil。 
討論 
這個方法在動畫塊外沒有任何作用。使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations類方法來結(jié)束。

責(zé)任編輯:冰凝兒
相關(guān)推薦

2011-08-15 13:50:06

IPhone開發(fā)UIView動畫

2011-08-01 10:01:12

Xcode UIView 動畫

2011-08-12 11:31:46

iPhoneUIView動畫

2011-08-16 18:13:42

IPhone開發(fā)UIView動畫

2011-07-03 10:05:52

Core Animat

2011-08-03 16:35:10

iPhone UIView 動畫

2011-08-03 16:26:14

iPhone UIView 動畫

2015-12-30 14:16:05

iOS動畫視圖渲染

2015-12-23 09:16:33

ios動畫渲染機制

2021-02-21 08:12:24

SVG線條動畫Web動畫

2011-07-22 16:37:14

IOS CALayer 動畫

2014-02-17 10:12:11

移動APP動畫設(shè)計

2021-02-21 07:49:40

Web動畫SVG線條動畫

2011-07-22 18:20:04

IOS View 動畫

2017-02-07 11:35:26

Android動畫蠟燭動畫

2022-01-16 12:10:18

騰訊動畫組件PAG

2013-07-25 13:43:23

iOS開發(fā)學(xué)習(xí)UIView的Anim

2015-06-18 10:33:02

iOS粘性動畫

2009-09-22 12:59:58

ibmdwDojo

2011-07-08 10:15:15

IPhone 動畫
點贊
收藏

51CTO技術(shù)棧公眾號