iOS UIView和CATransition的动画实现

拓拔麒
2023-12-01

一、UIView动画:

UIView可以产生动画效果的变化包括:

1.大小变化:改变视图框架(frame)和边界。 

2.拉伸变化:改变视图内容的延展区域。 

3.改变透明度:改变视图的alpha值。 

4.改变状态:隐藏或显示状态。

5.改变视图层次顺序:视图哪个前哪个后。 

6.旋转:即任何应用到视图上的仿射变换(transform)

UIView动画是成块运行的。发出beginAnimations:context:请求标志着动画块的开始;commitAnimations标志着动画块的结束。

代码如下:

 

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:1];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

 

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];

 

[UIView setAnimationDelegate:self];

 

[UIView commitAnimations];

其中transition取值范围:UIView类本身提供四种过渡效果:

UIViewAnimationTransitionNone 正常
UIViewAnimationTransitionFlipFromLeft 从左向右翻
UIViewAnimationTransitionFlipFromRight 从右向左翻
UIViewAnimationTransitionCurlUp 从下向上卷
UIViewAnimationTransitionCurlDown 从上向下卷

 

二、CATransition动画:

使用CATransition类实现动画,只需要建立一个Core Animation对象,设置它的参数,然后把这个带参数的过渡添加到图层即可。
使用要引入QuartzCore.framework

代码如下:

    //创建动画效果类

    CATransition *transition = [CATransition animation];

    //设置动画时长

    transition.duration = 0.7;

    //设置动画淡入淡出的效果

    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    //{kCATransitionMoveIn, kCATransitionPush, kCATransitionReveal, kCATransitionFade};设置动画类型,移入,推出等

    transition.type = kCATransitionMoveIn;

    //更多私有{@"cube",@"suckEffect",@"oglFlip",@"rippleEffect",@"pageCurl",@"pageUnCurl",@"cameraIrisHollowOpen",@"cameraIrisHollowClose"};

    

    //subtype有:{kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom};

    transition.subtype = kCATransitionFromLeft;

    //设置属性依赖

    transition.delegate = self;

    //在图层增加动画效果

    [self.view.layer addAnimation:transition forKey:nil];

 

::CATransition动画使用了类型type和子类型subtype两个概念。type属性指定了过渡的种类(淡化、推挤、揭开、覆盖)。subtype设置了过渡的方向(从上、下、左、右)。另外,CATransition私有的动画类型有(立方体、吸收、翻转、波纹、翻页、反翻页、镜头开、镜头关)。

 

转载于:https://www.cnblogs.com/tongyuling/p/4664905.html

 类似资料: