zoukankan      html  css  js  c++  java
  • CATransition

    - (IBAction)btnClicked:(id)sender {
        
        //创建CATransition
        CATransition *transition = [CATransition animation];
        //持续时长
        transition.duration = 0.5;
        //计时函数,从头到尾的流畅度
        transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];;
        
        //  @"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl"
        //  @"suckEffect" @"rippleEffect" @"oglFlip"
        //动画类型
        transition.type = @"flip";
        
        transition.subtype = kCATransitionFromRight; // 动画方向
        
         //要令一个转场生效,组要将动画添加到将要变为动画视图所附着的图层。例如在两个视图控制器之间进行转场,那就将动画添加到窗口的图层中:
        //如果是将控制器内的子视图转场到另一个子视图,就将动画加入到视图控制器的图层。还有一种选择,用视图控制器内部的视图作为替代,将你的子视图作为主视图的子图层:
        //如果你使用的是导航控制器,可以将动画加到导航控制器的视图图层中。
        
        // case 1
    //   [self.navigationController.view.layer addAnimation:transition forKey:@"transition"];
    //    UIViewController *vc= [[UIViewController alloc] init];
    //    vc.view.backgroundColor = [UIColor redColor];
    //    [self.navigationController pushViewController:vc animated:YES];
        
        
        // case 2
        transition.type = @"pageCurl";
        transition.subtype = kCATransitionFromLeft;
    // 效果神奇 (*****) transition.startProgress = 0.3;
        transition.endProgress = 0.8;
    // 这俩属性要同时设置
        transition.fillMode = @"forwards";
        transition.removedOnCompletion = NO; [self.greenView.layer addAnimation:transition forKey:
    @"green"]; }

    @interface CATransition : CAAnimation

    CATransition是CAAnimation的子类

     

     CAAnimation类
    CAAnimation类,是一个抽象类。遵循CAMediaTiming协议和CAAction协议!
    CAMediaTiming协议

    可以调整时间,包括持续时间,速度,重复次数。

    CAAction协议

    可以通过响应动作的方式来显示动画。

    CAAnimation有很多派生类

    CATransition 提供渐变效果:(推拉push效果,消退fade效果,揭开reveal效果)。

    CAAnimationGroup 允许多个动画同时播放。

     CABasicAnimation 提供了对单一动画的实现。

    CAKeyframeAnimation 关键桢动画,可以定义行动路线。

    CAConstraint 约束类,在布局管理器类中用它来设置属性。

    CAConstraintLayoutManager 约束布局管理器,是用来将多个CALayer进行布局的.各个CALayer是通过名称来区分,而布局属性是通过CAConstraint来设置的。



    CATransaction 事务类,可以对多个layer的属性同时进行修改.它分隐式事务和显式事务。

     CAAnimation属性
    delegate

    @property(retain) id delegate
    为CAAnimation设置代理。默认为nil。
    注意:一个CAAnimation实例,不能设置delegate为self。会引起循环引用。

    removedOnCompletion

    @property(getter=isRemovedOnCompletion) BOOL removedOnCompletion

    设置是否动画完成后,动画效果从设置的layer上移除。默认为YES。

    timingFunction
    @property(retain) CAMediaTimingFunction *timingFunction
    设置动画的“时机”效果。就是动画自身的“节奏”:比如:开始快,结束时变慢;开始慢,结束时变快;匀速;等,在动画过程中的“时机”效果。

    animation
    + (id)animation
    创建并返回一个CAAnimation实例。
    defaultValueForKey
    + (id)defaultValueForKey:(NSString *)key
    根据属性key,返回相应的属性值。

    CAAnimation实例方法
    shouldArchiveValueForKey
    - (BOOL)shouldArchiveValueForKey:(NSString *)key
    返回指定的属性值是否可以归档。
    key:指定的属性。
    YES:指明该属性可以被归档;NO:不能被归档。

    CAAnimation协议方法
    animationDidStart
    - (void)animationDidStart:(CAAnimation *)theAnimation
    动画开始时,执行的方法。
    theAnimation:正在执行动画的CAAnimation实例。

    animationDidStop:finished
    - (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
    动画执行完成或者动画为执行被删除时,执行该方法。
    theAnimation:完成或者被删除的动画实例
    flag:标志该动画是执行完成或者被删除:YES:执行完成;NO:被删除。

  • 相关阅读:
    golang 数据结构 优先队列(堆)
    leetcode刷题笔记5210题 球会落何处
    leetcode刷题笔记5638题 吃苹果的最大数目
    leetcode刷题笔记5637题 判断字符串的两半是否相似
    剑指 Offer 28. 对称的二叉树
    剑指 Offer 27. 二叉树的镜像
    剑指 Offer 26. 树的子结构
    剑指 Offer 25. 合并两个排序的链表
    剑指 Offer 24. 反转链表
    剑指 Offer 22. 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/yaoxc/p/4054501.html
Copyright © 2011-2022 走看看