明天重要用到的動畫類是CALayer下的CATransition至於各類動畫類中若何繼續的在這也不做贅述,網上的材料是一抓一年夜把。好空話少說切入明天的正題。
一.封裝動畫辦法
1.用CATransition完成動畫的封裝辦法以下,每句代碼是何意思,請看正文之。
#pragma CATransition動畫完成
- (void) transitionWithType:(NSString *) type WithSubtype:(NSString *) subtype ForView : (UIView *) view
{
//創立CATransition對象
CATransition *animation = [CATransition animation];
//設置活動時光
animation.duration = DURATION;
//設置活動type
animation.type = type;
if (subtype != nil) {
//設置子類
animation.subtype = subtype;
}
//設置活動速度
animation.timingFunction = UIViewAnimationOptionCurveEaseInOut;
[view.layer addAnimation:animation forKey:@"animation"];
}
代碼解釋:
CATransition經常使用的屬性以下:
duration:設置動畫時光
type:稍後上面會具體的引見活動類型
subtype:和type婚配應用,指定活動的偏向,上面也會具體引見
timingFunction :動畫的活動軌跡,用於變更終點和起點之間的插值盤算,抽象點說它決議了動畫運轉的節拍,好比是
平均變更(雷同時光變更量雷同)照樣先快後慢,先慢後快照樣先慢再快再慢.
* 動畫的開端與停止的快慢,有五個預置分離為(下同):
* kCAMediaTimingFunctionLinear 線性,即勻速
* kCAMediaTimingFunctionEaseIn 先慢後快
* kCAMediaTimingFunctionEaSEOut 先快後慢
* kCAMediaTimingFunctionEaseInEaSEOut 先慢後快再慢
* kCAMediaTimingFunctionDefault 現實後果是動畫中央比擬快.
2.用UIView的block回調完成動畫的代碼封裝
#pragma UIView完成動畫
- (void) animationWithView : (UIView *)view WithAnimationTransition : (UIViewAnimationTransition) transition
{
[UIView animateWithDuration:DURATION animations:^{
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:transition forView:view cache:YES];
}];
}
3.轉變View的配景圖,便於切換時不雅察
#pragma 給View添加配景圖
-(void)addBgImageWithImageName:(NSString *) imageName
{
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:imageName]];
}
二.挪用下面的辦法完成我們想要的動畫
1.我們在View上添加多個Button,給分歧的Button設置分歧的Tag值,然後再ViewController中綁定統一個辦法,點擊分歧的button完成分歧的頁面切換後果。storyBoard上的控件後果以下圖所示:

2.上面我們就開端編寫點擊button要回調的辦法
(1).界說列舉來標示按鈕所對應的動畫類型,代碼以下:
typedef enum : NSUInteger {
Fade = , //淡入淡出
Push, //推擠
Reveal, //揭開
MoveIn, //籠罩
Cube, //立方體
SuckEffect, //吮吸
OglFlip, //翻轉
RippleEffect, //波紋
PageCurl, //翻頁
PageUnCurl, //反翻頁
CameraIrisHollowOpen, //開鏡頭
CameraIrisHollowClose, //關鏡頭
CurlDown, //下翻頁
CurlUp, //上翻頁
FlipFromLeft, //左翻轉
FlipFromRight, //右翻轉
} AnimationType;
(2),獲得Button的Tag值:
UIButton *button = sender; AnimationType animationType = button.tag;
(3).每次點擊button都轉變subtype的值,包含上,左,下,右
NSString *subtypeString;
switch (_subtype) {
case :
subtypeString = kCATransitionFromLeft;
break;
case :
subtypeString = kCATransitionFromBottom;
break;
case :
subtypeString = kCATransitionFromRight;
break;
case :
subtypeString = kCATransitionFromTop;
break;
default:
break;
}
_subtype += ;
if (_subtype > ) {
_subtype = ;
}
(4),經由過程switch聯合上邊的列舉來斷定是誰人按鈕點擊的
switch (animationType)
{
//各類Case,此處代碼上面會給出
}
3.挪用我們封裝的活動辦法,來完成動畫後果
(1),淡化後果
case Fade: [self transitionWithType:kCATransitionFade WithSubtype:subtypeString ForView:self.view]; break;
(2).Push後果
case Push: [self transitionWithType:kCATransitionPush WithSubtype:subtypeString ForView:self.view]; break;
後果以下:

(3).揭開後果:
case Reveal: [self transitionWithType:kCATransitionReveal WithSubtype:subtypeString ForView:self.view]; break;
後果圖以下:

(4).籠罩後果
case MoveIn: [self transitionWithType:kCATransitionMoveIn WithSubtype:subtypeString ForView:self.view]; break;
後果圖以下:

(5).立方體後果
case Cube: [self transitionWithType:@"cube" WithSubtype:subtypeString ForView:self.view]; break;
後果以下:

(6).吮吸後果
case SuckEffect: [self transitionWithType:@"suckEffect" WithSubtype:subtypeString ForView:self.view]; break;
後果以下:

(7).翻轉後果
case OglFlip: [self transitionWithType:@"oglFlip" WithSubtype:subtypeString ForView:self.view]; break;
後果圖以下:

8.波紋後果
case RippleEffect: [self transitionWithType:@"rippleEffect" WithSubtype:subtypeString ForView:self.view]; break;

(9).翻頁和反翻頁後果
case PageCurl: [self transitionWithType:@"pageCurl" WithSubtype:subtypeString ForView:self.view]; break; case PageUnCurl: [self transitionWithType:@"pageUnCurl" WithSubtype:subtypeString ForView:self.view]; break;

(10).相機翻開後果
case CameraIrisHollowOpen: [self transitionWithType:@"cameraIrisHollowOpen" WithSubtype:subtypeString ForView:self.view]; break; case CameraIrisHollowClose: [self transitionWithType:@"cameraIrisHollowClose" WithSubtype:subtypeString ForView:self.view]; break;

(11),挪用下面封裝的第二個動畫辦法
case CurlDown: [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionCurlDown]; break; case CurlUp: [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionCurlUp]; break; case FlipFromLeft: [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionFlipFromLeft]; break; case FlipFromRight: [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionFlipFromRight]; break;
以上內容是針對IOS開辟中經常使用的各類動畫、頁面切面後果的相干引見,願望對年夜家有所贊助!
【iOS開辟中經常使用的各類動畫、頁面切面後果】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!