iOS常用动画

在iOS中动画可以分为2类:UIView动画以及CALayer动画,UIView动画本质上也是CALayer动画.

UIView动画可以给UIView的部分属性添加动画:frame,bounds,center,transform,alpha,

UIVIew支持翻转以及翻页动画:UIViewAnimation Transition***.

beginAnimations:context://标记动画设置开始

commitAnimations//提交动画,开始动画

 //动画会让我们的变化过程变得平缓

    //对于ios4.0之前,如果想要使用动画,就必须要写在beginAnimations(动画开始)commitAnimations(动画的结束)方法之间,动画才会有效果.

    //对于UIView动画可做动画的属性有center,transform,backgroundColor,alpha,frame,bounds,

    //UIView动画使用比较简单,想对哪个属性做动画,就把该属性的变化放在动画开始和动画的结束两个方法之间即可,切记,属性必须是能够做动画的属性.

    //必须把对属性的配置放到属性改变之前.

    //开始动画

    [UIView beginAnimations:@"animation1" context:nil];

    //设置动画的持续时间

    [UIView setAnimationDuration:2];

    //设置动画的重复次数

    [UIView setAnimationRepeatCount:2];

    //设置动画的延迟时间

    [UIView setAnimationDelay:2];

    //设置动画的逆反,默认为NO.

    [UIView setAnimationRepeatAutoreverses:YES];

    //设置动画效果是否有效,默认为YES

    [UIView setAnimationsEnabled:YES];

    //设置动画的变化效果

    /**

     *  1.UIViewAnimationCurveLinear 匀速

        2.UIViewAnimationCurveEaseInOut 开始和结束的时候较慢,中间较慢

        3.UIViewAnimationCurveEaseIn (淡入)开始较慢

        4.UIViewAnimationCurveEaseOut (淡出)结束较慢

     */

    [UIView setAnimationCurve:UIViewAnimationCurveLinear];

    view.center=CGPointMake(200, 200);

    //设置动画的代理

    [UIView setAnimationDelegate:self];

    //设置动画将要开始时触发的方法

    [UIView setAnimationWillStartSelector:@selector(animationWillStart:context:)];

    //设置动画已经结束后触发的方法

    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

    //结束动画

    [UIView commitAnimations];

    

    //animationID用来标识唯一标记


//动画将要开始时触发

- (void)animationWillStart:(NSString *)animationID context:(void *)context

{

   // NSLog(@"startAnimation");

}

//动画已经结束后触发

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context

{

    //[view removeFromSuperview];

    

   // NSLog(@"stopAnimation");

    if ([animationID isEqual:@"animation1"]) {

        NSLog(@"蓝欧");

    }

    else if([animationID isEqual:@"animation2"])

    {

        NSLog(@"科技");

    }


}

CALayer是iOS中界面显示的基础,所有的界面元素都继承自它.UIView有一个readonly的属性就是layer.

CALayer同样也由frame,bounds,backgroundColor属性.

可以通过UIView的layer属性,给视图添加阴影,边框效果.

layer特有的两个重要属性anchorPoint锚点和position位置

锚点默认是在视图中心点,值为(0.5,0.5),左上角值为(0,0).

position是锚点基于父视图原点的位置.修改postion,锚点不变,但frame会变化.

修改锚点,position不变,但frame会变化.

Layer是所有动画触发的核心.UIView动画都源自Layer.Layer动画有透明,漂浮,视图缩放等.

//对于CALayer的属性做动画,也就是我们的CA动画(CAAnimation),只是一个动画的假象而已,并不是完全改变属性的值.

//对于UIView的属性动画,做完动画之后,属性的值也被修改了.

//keyPath:设置对CALayer的哪个属性进行更改,只填写属性名即可

 CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"position.y"];

    //设置动画的持续时间

    [basicAnimation setDuration:3];

    

    NSNumber *fromValue=[NSNumber numberWithFloat:10];

    NSNumber *toValue=[NSNumber numberWithFloat:400];

  basicAnimation.fromValue=fromValue;

    basicAnimation.toValue=toValue;

    //初始化CA动画之后,一定要记住对哪个viewlayer层做动画,

    //layer添加动画

    [view.layer addAnimation:basicAnimation forKey:nil];

 //view设置圆角,为超出view的部分裁剪掉.

    view.layer.cornerRadius = 20;

    //view.layer.masksToBounds = YES;

    //设置view边框的宽度

    view.layer.borderWidth = 2;

//    view.layer.opacity=10;   //阴影的颜色

//    view.layer.shadowColor=[UIColor yellowColor].CGColor;

 //设置阴影的透明度,默认为0.如果想要让阴影显示,必须关闭maskToBounds,然后将阴影的透明度设置为一个不为零的一个数

//    view.layer.shadowOpacity=1;

    //设置view边框的颜色

//    view.layer.borderColor = [UIColor brownColor].CGColor;

 //view.layer.position=CGPointMake(200, 200);  

//    view.transform=CGAffineTransformRotate(view.transform, M_PI_4);

//    //设置view的锚点,有四个值,(0,0),(0,1),(1,0),(1,1).

//    view.layer.anchorPoint=CGPointMake(0.5,0.5);

CA动画 CA是CoreAnimation的缩写,里面封装了iOS全部的动画效果.常见的动画类:CABasicAnimation,CAKeyFrameAnimation,CATransition等.


//block块语法,是新提出的语法,可以把一块代码写在block的大括号内,block也是苹果推荐使用的一种新的语法,它的作用经常用于回调.

//如果想在block块中修改变量名,可以用__block声明变量.

//    __block int n = 9;

//    int (^ TestBlock)(int x)=^(int x){

//        n =10;

//        return x;

//    };

//    int number=TestBlock(5);

//    NSLog(@"%d",number);

//基于block的动画,其实是对之前不适用block语法的动画的进一步封装,只需要调用一个方法就可以配置多个动画效果.

[UIView animateWithDuration:3 animations:^{

     // 只在animations括号内封装了[UIView beginAnimation:context:];以及[UIView commitAnimations]方法.

     //view.center=CGPointMake(200, 200);

}];


 //页面间过度动画

    [UIView transitionFromView:view toView:view1 duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:^(BOOL finished){

  }];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值