美文网首页
核心动画(三)

核心动画(三)

作者: 一个人的思考 | 来源:发表于2017-05-08 09:13 被阅读15次

    转场动画

    一、CATransition简介

    • CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点
    • UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果
    • 动画属性:
      • type:动画过渡类型
      • subtype:动画过渡方向
      • startProgress:动画起点(在整体动画的百分比)
      • endProgress:动画终点(在整体动画的百分比)

    二、转场动画的过渡效果

    见图

    使用UIView动画函数实现转场动画——单视图

    + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
    
    • 参数说明:
      • duration:动画的持续时间
      • view:需要进行转场动画的视图
      • options:转场动画的类型
      • animations:将改变视图属性的代码放在这个block中
      • completion:动画结束后,会自动调用这个block

    使用UIView动画函数实现转场动画——双视图

    + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion;
    
    • 参数说明:
      • duration:动画的持续时间
      • options:转场动画的类型
      • animations:将改变视图属性的代码放在这个block中
      • completion:动画结束后,会自动调用这个block

    三、CADisplayLink

    • CADisplayLink是一种以屏幕刷新频率触发的时钟机制,每秒钟执行大约60次左右

    • CADisplayLink是一个计时器,可以使绘图代码与视图的刷新频率保持同步,而NSTimer无法确保计时器实际被触发的准确时间

    • 使用方法:

      • 定义CADisplayLink并制定触发调用方法
      • 将显示链接添加到主运行循环队列
    • 示例:

    - (CADisplayLink *)link
    {
        if (_link == nil) {
            _link = [CADisplayLink displayLinkWithTarget:self selector:@selector(rotationChange)];
    
            [_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
        }
        return _link;
    }
    

    相关文章

      网友评论

          本文标题:核心动画(三)

          本文链接:https://www.haomeiwen.com/subject/mrcmtxtx.html