• iOS动画1 — UIView动画


    iOS动画1 — UIView动画

     

      iOS动画基础是Core Animation核心动画。Core Animation是iOS平台上负责图形渲染与动画的基础设施。由于核心动画的实现比较复杂,苹果提供了实现简单动画的接口—UIView动画。UIView动画封装在UIView的Category中,主要实现一些简单和常用的动画。UIView动画是对核心动画进行了一层封装,所以最终动画还是通过Core Animation的接口实现。

     

                             

      

      主要的动画效果都可以通过UIView动画和Core Animation实现,在技术上如何选择呢?

      1、简单的、只执行一次的动画使用UIView动画,如页面切换。UIView动画性能上比核心动画差,如果动画简单的话性能损失可以忽略不计,而UIView使用起来很方便。

      2、多次或无限次重复的动画使用Core Animation。这个时候使用UIView动画会有性能问题。

        3、UIView实现不了的动画。UIView对Core Animation的常用动画进行了封装,不能解决所有的问题。

     

      UIView动画有两种调用方式

     

      不推荐使用下面这种动画块的方式。

    1
    2
    3
    4
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    self.view.alpha = 0.0;
    [UIView commitAnimations];

      

      推荐使用带block的方法

    1
    2
    3
    [UIView animateWithDuration:1.0 animations:^{ 
    } completion:^(BOOL finshed){  
    }]; 

      

      下面三个类方法其实是一个方法,方法2和3省略了方法1的一些参数。

    1
    + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

      

    1
    + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

     

    1
    + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations

      duration    动画持续的时间

      delay        动画延迟的时间

      options       如何执行动画的一些选项,比如先快后慢的执行动画。

      animations  动画block,在这里对要进行动画变换的View进行形变、位移、旋转、渐变等操作

      completion    动画完成后调用的block

     

      容器视图动画,这个参数view的所有subview都将跟随这个view一起变化。

    1
    + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

      

      两个view的过渡动画,从fromView切换到toView。注意:这个动画作用的不是fromView和toView本身,而是两个view的共同的superview。

    1
    + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion

     

      options定义:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    enum {
       UIViewAnimationOptionLayoutSubviews            = 1 <<  0,
       UIViewAnimationOptionAllowUserInteraction      = 1 <<  1,
       UIViewAnimationOptionBeginFromCurrentState     = 1 <<  2,
       UIViewAnimationOptionRepeat                    = 1 <<  3,
       UIViewAnimationOptionAutoreverse               = 1 <<  4,
       UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5,
       UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6,
       UIViewAnimationOptionAllowAnimatedContent      = 1 <<  7,
       UIViewAnimationOptionShowHideTransitionViews   = 1 <<  8,
       UIViewAnimationOptionOverrideInheritedOptions  = 1 <<  9,
        
       UIViewAnimationOptionCurveEaseInOut            = 0 << 16,
       UIViewAnimationOptionCurveEaseIn               = 1 << 16,
       UIViewAnimationOptionCurveEaseOut              = 2 << 16,
       UIViewAnimationOptionCurveLinear               = 3 << 16,
        
       UIViewAnimationOptionTransitionNone            = 0 << 20,
       UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20,
       UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20,
       UIViewAnimationOptionTransitionCurlUp          = 3 << 20,
       UIViewAnimationOptionTransitionCurlDown        = 4 << 20,
       UIViewAnimationOptionTransitionCrossDissolve   = 5 << 20,
       UIViewAnimationOptionTransitionFlipFromTop     = 6 << 20,
       UIViewAnimationOptionTransitionFlipFromBottom  = 7 << 20,
    };
    typedef NSUInteger UIViewAnimationOptions;

      

      UIViewAnimationOptionLayoutSubviews            所有子view跟父view作为一个整体一起动画。此方式为默认方式 

      UIViewAnimationOptionAllowUserInteraction      在动画运行过程中接收用户操作

      UIViewAnimationOptionBeginFromCurrentState 从当前的状态开始执行动画。设置  

     

  • 相关阅读:
    ArcGIS Engine要素渲染和专题图制作(转)
    网络换行符替换为word换行符
    栅格数据处理 RasterDataset RasterLayer Raster RasterBandCollection
    ISurfaceOp 接口生成等高线
    小女孩动画
    pytest 知识点学习
    pytest+python 项目初步实践及生成allure报告
    docker安装python项目
    windows 10 专业版 安装docker desktop
    selenium+python自动化测试--解决无法启动IE浏览器及报错问题
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5875732.html
Copyright © 2020-2023  润新知