深度解析iPhone開發動畫過渡過程
深度解析iPhone開發動畫過渡過程,主要講解了iphone開發中動畫過度的相關內容,不多說,先來看詳細內容。
1:首先獲取當前的圖形上下文:
- CGContextRef context = UIGraphicsGetCurrentContext();
2:接著設置一些動畫屬性用于開始動畫:
- [UIView beginAnimations:nil context:context];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
- [UIView setAnimationDuration:1.0];
3:然后設置想要過度的對象的最終狀態.
- [big setFrame:SMALLRECT];
- [big setAlpha:0.5];
- [little setFrame:BIGRECT];
- [little setAlpha:1.0];
4:最后提交動畫,這樣一個動畫就會自動生成了
- [UIView commitAnimations];
其中,setAnimationCurve是設置動畫的方式,他有下面集中方式:
- UIViewAnimationCurveEaseInOut //開始和結束時動畫效果比較慢
- UIViewAnimationCurveEaseIn //開始動畫效果比較慢
- UIViewAnimationCurveEaseOut //結束動畫效果比較慢
- UIViewAnimationCurveLinear //平滑的動畫效果
而setAnimationDuration則是設置動畫的持續時間.
下面是兩個UIView之間的動畫過度
- // Start Animation Block
- //CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextRef context = nil;
- [UIView beginAnimations:nil context:context];
- [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
- [UIView setAnimationDuration:1.0];
- // Animations
- [[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
- // Commit Animation Block
- [UIView commitAnimations];
頁面之間的過度主要依靠UIView setAnimationTransition: forView: cache: 這個方法以及 exchangeSubviewAtIndex:withSubviewAtIndex:
前者通過UIView靜態方法設置過度的動畫種類,后者實現真正的過度函數掉用.種類有如下五種:
- typedef enum {
- UIViewAnimationTransitionNone,
- UIViewAnimationTransitionFlipFromLeft,
- UIViewAnimationTransitionFlipFromRight,
- UIViewAnimationTransitionCurlUp,
- UIViewAnimationTransitionCurlDown,
- } UIViewAnimationTransition;
除了這種簡單的動畫方式外,其實還有一種利用QuartzCore來做過度動畫.不同的地方在于,這個過度動畫作用于層,換句話說,他動畫直接做用于整個UIView,而不像UIView的動畫,可以作用于UIView局部或本身.當UIView作用與本身時,實際上也就相當于是對層的動畫了.
- CATransition *animation = [CATransition animation];
- [animation setDelegate:self];
- [animation setDuration:1.0f];
- [animation setTimingFunction:UIViewAnimationCurveEaseInOut];
- [animation setType: kCATransitionMoveIn];
- [animation setSubtype: kCATransitionFromBottom];
- [[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
- [[[self superview] layer] addAnimation:animation forKey:@"transitionViewAnimation"];
setDuration:和UIView中的動畫效果一樣,持續時間.setTimingFunction:是動畫的種類,和UIView一樣,比如勻速動畫,快速開始結束等.setType:是指定動畫的類型,他有: kCATransitionFade (淡入淡出來補給動畫)kCATransitionMoveIn(從一個方向覆蓋的方式來補給動畫)kCATransitionPush(推送的方式來補給動畫)kCATransitionReveal(一個試圖展現出另外另外一個試圖的方式)當除了第一種方式外(淡入淡出),可以通過setSubType:來制定動畫的方向(因為這些動畫都是直接著用于層的,所以相當于只有試圖間的切換過渡).動畫方向有4個:kCATransitionFromRightkCATransitionFromLeftkCATransitionFromTopkCATransitionFromBotto
小結:深度解析iPhone開發動畫過渡過程的內容介紹完了,希望本文對你有所幫助!