• IO开发之图形动画


    在IOS开发中图形界面的动画一般发生在以下两种情况:

      1.两个uiview视图的切换,有动画效果。

      2.本身视图的位置,大小,或 角度旋转 的动画效果。

    一.利用uiview实现切换视图的动画,但是在切换视图的效果中只有四种样式,

      UIViewAnimationTransitionFlipFromLeft,   向左翻转

      UIViewAnimationTransitionFlipFromRight, 向右翻转

          UIViewAnimationTransitionCurlUp,           向上翻页

          UIViewAnimationTransitionCurlDown,       向下翻页

      实现代码demo1:

    //开始动画 
    [UIView beginAnimations:nil context:NULL];
    
    //设置动画执行时间 
    [UIView setAnimationDuration:1.0];
    
    //设置动画的效果和指定的View。这里设置的View必须是变化子视图的父视图。(在父视图的变化过程中改变子视图的内容)
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.viewContainer cache:YES];
    
    //这里写在视图容器里视图变化的过程,整个过程在容器视图的图层变化过程中发生改变
     [self.viewContainer bringSubviewToFront:_second.view];
    
    //提交动画才会有显示动画效果
     [UIView commitAnimations];

      实现代码demo2:

    //仅仅用uiview的类方法切换视图
    [UIView transitionFromView:view1 toView:view2 duration:1.0 options:UIViewAnimationOptionTransitionCurlUp completion:^(BOOL finished) {
                    NSLog(@"animation completion");
                    rectoVisible = !rectoVisible;
                }];

     options的值: 

      UIViewAnimationOptionTransitionFlipFromLeft, 左翻页

        UIViewAnimationOptionTransitionFlipFromRight, 右翻页

        UIViewAnimationOptionTransitionCurlUp,上卷曲翻页

        UIViewAnimationOptionTransitionCurlDown,下卷曲翻页

        UIViewAnimationOptionTransitionCrossDissolve , 渐变

        UIViewAnimationOptionTransitionFlipFromTop,上翻页

        UIViewAnimationOptionTransitionFlipFromBottom ,下翻页

     二.利用CAAnimation类完成视图切换的动画,此类可实现的动画效果很多

    CAAnimation的type属性系统指定的效果:

      kCATransitionFade, 淡化效果,此效果为默认效果

      kCATransitionMoveIn , 覆盖效果

      kCATransitionPush, 挤出效果

      kCATransitionReveal ,移出效果

    字符串效果:

      @"cube" 立方体转换

      @"suckEffect" 吸收效果

      @"oglFlip"翻页效果

      @"rippleEffect"水滴效果  

      @"pageCurl" 向上卷曲翻页

      @"pageUnCurl" 向下卷曲翻页

      @"cameraIrisHollowOpen" 镜头展开效果

      @"cameraIrisHollowClose" 镜头关闭效果

    CAAnimation的SubType属性:

      kCATransitionFromLeft,  

      kCATransitionFromBottom,

      kCATransitionFromRight,

      kCATransitionFromTop

    具体实现demo:(viewContainer为自定义的视图容器)

    //创建对象    
    CATransition *animation=[CATransition animation];
    
    //设置动画执行时间   
    animation.duration = 1.0;
    
    //动画类型   
    animation.type=kCATransitionReveal;
    
    //动画方向
    animation.subtype=kCATransitionFromTop;
    
    //设置动画执行速率变化    
    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
    
    //切换子视图
     [self.viewContainer bringSubviewToFront:_second.view];
    
    //在容器视图的图层上添加animation
    [self.viewContainer.layer addAnimation:animation forKey:@"animation"];

    三.视图缩小,移动,旋转动画

    具体实现demo:

    //设置缩小的transform,缩小为原大小的宽0.5倍,高0.8倍
    CGAffineTransform scale =CGAffineTransformMakeScale(0.5, 0.8); 
    
    //设置旋转的transform并带入缩小的scale,旋转大小为60度,并转换为弧度制
    CGAffineTransform rotate =CGAffineTransformRotate(scale, M_PI * 60/180);
    
    //将transform的变化放到动画中
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    
    //设置位移,在x方向移动0,y方向移动150,并结合前两个transform
     view.transform=CGAffineTransformTranslate(rotate,0150);
    
    [UIView commitAnimations];
  • 相关阅读:
    python ratelimit使用
    团队怎样去做技术规划
    分词语义提取工具
    今日头条推荐系统
    要选择做有价值的事情
    总结与规划
    性能使用到极限
    流量运营
    Stanford CoreNLP使用需要注意的一点
    七年总结
  • 原文地址:https://www.cnblogs.com/csdnmc/p/3968838.html
Copyright © 2020-2023  润新知