成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone開發學習筆記通過UIView實現動畫效果

移動開發 iOS
IPhone開發學習筆記通過UIView實現動畫效果是本文要介紹的內容,UIKit通過封裝Core Animation實現了一些常用的動畫效果,用起來非常方便。

IPhone開發學習筆記通過UIView實現動畫效果是本文要介紹的內容,UIKit通過封裝Core Animation實現了一些常用的動畫效果,用起來非常方便。使用的方法是通過UIView來聲明一個動畫塊,在這個塊中做的任何屬性變化,都會呈現動畫效果。

具體的語法上有兩種寫法,這里講的是老式的寫法,IOS4.0后的新寫法請參考文檔,基本的思路是一樣的。具體可以看這個:

  1. http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html 

先說明幾個基本的概念,方便理解后面的函數。
   
屬性變化: 可以實現動畫效果的屬性包括位置(frame, bound), 對齊關系,透明度,背景色,內容拉伸,和transform(這個就多了,下面講)
   
timing curve: 時間曲線,以時間作為橫軸,其他值(這里就是指需要變化的屬性)作為縱軸。在整個動畫持續時間內的函數曲線。
    
ease in/ease out: 慢進/慢出,結合上面的時間曲線的概念,就是在動畫開始/或是結束的時候,屬性變化會減慢,看下面這個圖:是ease in ease out 也是默認的動畫效果(不是很好,網上隨便找的)如圖:

iPhone開發學習筆記通過UIView實現動畫效果

liner: 線性變化,這個不講了,時間變化曲線一共就這兩種。默認是EaseInEaseOut,無疑EaseInEaseOut的效果會更加平滑,但是負荷也大些,不過一般問題不大。
fade in /fade out: 淡入, 淡出,是一種動畫效果,就是逐漸消失,逐漸出現這種東西。

講具體的函數前,先舉個例子先,

代碼

  1.     [UIView beginAnimations:@"ToggleViews" context:nil];      
  2.     [UIView setAnimationDuration:1.0];      
  3.    [UIView setAnimationCurve:UIViewAnimationEaseInOut];      
  4.    // Make the animatable changes.    firstView.alpha = 0.0;      
  5.    secondView.alpha = 1.0;      
  6.    // Commit the changes and perform the animation.      
  7.   [UIView commitAnimations]; 

這段代碼就可以實現一個漂亮的淡入淡出的切換了,你所要做的,就是用begin/commit函數圈起一塊區域,然后把你想做的變化寫進去,無論有多少個,他們都會不被立刻執行,知道commit函數提交。簡單的說明下函數:

beginAnimation:context:   兩個參數都是給delegate用的,一般nil也沒問題,animationID是標示當前動畫的名稱,在一個代理對應多端動畫時用于區別,context是void*,回調函數里常用,用于傳遞額外的數據,保存上下文,避免使用全局變量。

setAnimationCurve: 這個上面說過了,默認就是UIViewAnimationCurveEaseInOut,不寫也可以。

setAnimationDuration:  動畫的長度,秒作為單位

再補充個常用的函數,setAnimationRepeatCount: 可以重復動畫,有些場景下挺好用的。

如果需要在動畫之前或是動畫之后做一些操作的話,可以定義代理(就是兩個回調函數)。看下面這個例子,在一個動畫后面接了另外一個動畫,熟悉代理的使用話,就沒啥可講的了。

代碼

  1. // This method begins the first animation.  
  2. - (IBAction)showHideView:(id)sender{  
  3.     [UIView beginAnimations:@"ShowHideView" context:nil];      
  4.     [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];      
  5.     [UIView setAnimationDuration:1.0];      
  6.     [UIView setAnimationDelegate:self];      
  7.     [UIView setAnimationDidStopSelector:@selector(showHideDidStop:finished:context:)];       
  8.     // Make the animatable changes.    thirdView.alpha = 0.0;       
  9.     // Commit the changes and perform the animation.    [UIView commitAnimations];  
  10.   }   
  11.   // Called at the end of the preceding animation.  
  12.   - (void)showHideDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{      
  13.      [UIView beginAnimations:@"ShowHideView2" context:nil];      
  14.      [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];      
  15.      [UIView setAnimationDuration:1.0];      
  16.      [UIView setAnimationDelay:1.0];       
  17.      thirdView.alpha = 1.0;       
  18.      [UIView commitAnimations];} 

接下去要講view transition的動畫效果,就是常見的那種翻頁的效果,老版本的寫法是這樣的:

代碼

  1.   //代碼摘自iphone基礎開發          
  2.   [UIView setAnimationTransition:      
  3.         UIViewAnimationTransitionFlipFromRight   
  4.                 forView:self.view cache:YES];  
  5. [blueViewController viewWillAppear:YES];          
  6. [yellowViewController viewWillDisappear:YES];          
  7. [blueViewController.view removeFromSuperview];          
  8. [self.view insertSubview:yellowViewController.view atIndex:0];          
  9. [yellowViewController viewDidDisappear:YES];          
  10. [blueViewController viewDidAppear:YES]; 

在IOS4.0 之前,要實現view之間切換的動畫效果你必須使用父view,然后切換子view,只有子view的效果才能出現動畫,所以你看setAnimationTranistion里forView里寫的父view。

4.0之后,可以這么寫:

代碼

  1.     [UIView transitionFromView:(self.view)                         
  2.     toView:(self._view2)                         
  3.     duration:1.0                         
  4.     options:UIViewAnimationOptionTransitionCurlUp                         
  5.     completion:^(BOOL finished) {      
  6.   }     
  7. ]; 

小結:iPhone開發學習筆記通過UIView實現動畫效果的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-15 13:50:06

IPhone開發UIView動畫

2011-08-22 14:21:24

iPhone開發UIView Anim

2011-07-08 10:15:15

IPhone 動畫

2011-08-12 14:04:53

iPhone動畫

2011-08-12 11:31:46

iPhoneUIView動畫

2011-08-10 14:40:23

iPhone動畫

2011-08-19 11:10:31

iPhone應用

2011-08-15 10:06:22

iPhone開發nib 文件

2011-08-09 17:29:29

iPhone文件屏幕

2011-07-29 13:55:10

IPhone 動畫

2013-07-25 13:43:23

iOS開發學習UIView的Anim

2011-08-11 10:16:23

iPhoneUIView視圖

2011-08-11 10:27:37

iPhoneUIView視圖

2011-07-08 15:08:16

iPhone 圖片

2011-08-08 14:57:46

iPhone Autoreleas Property

2011-07-22 18:20:04

IOS View 動畫

2012-12-24 13:38:01

iOSUIView

2011-08-08 15:56:18

iPhone 震動 NSUserDefa

2011-08-01 10:01:12

Xcode UIView 動畫

2011-08-12 09:48:24

iPhoneCoreLocatio定位
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区久久 | 久热精品在线观看视频 | 国产精品久久久久久吹潮 | 中文无吗 | 欧美日韩一区二区在线 | 精品国产久| 国产高清精品在线 | 一区二区三区免费 | 中文字幕在线不卡 | 超碰精品在线 | 国产精品一区在线观看你懂的 | 久久亚洲高清 | 美女视频网站久久 | 久久免费国产 | 毛片99| 奇米久久久 | 国产午夜精品视频 | 欧美日韩福利 | 91欧美精品 | 特级毛片 | 成人免费日韩 | 91精品国产一区二区在线观看 | 中文字幕一区二区三区四区 | 欧美日韩国产不卡 | 精品av天堂毛片久久久借种 | 在线视频一区二区三区 | 天天精品综合 | 国产三级国产精品 | 久草在线影 | 视频一区二区在线观看 | 9999精品视频 | 亚洲一页| 亚洲美女视频 | 色毛片 | 97精品超碰一区二区三区 | 91精品国产91久久久久青草 | 亚洲成人动漫在线观看 | 午夜在线免费观看 | 久草福利 | 欧美日韩亚洲一区 | 综合一区二区三区 |