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:被删除。

  • 相关阅读:
    2、react-生命周期1※※※
    4.vue class 绑定- model基础应用
    1.react的基础
    Leetcode 5429 数组中的 k 个最强值
    leetcode 21.合并两个有序链表(迭代)
    【Postman请求无响应】Can not get any response
    【PageHelper】插件不生效的原因及解决办法
    【fasterxml.jackson】字段(反)序列号问题Access.WRITE_ONLY
    【SpringCloud-Maven】依赖版本比对
    【Charles】抓包工具使用
  • 原文地址:https://www.cnblogs.com/yaoxc/p/4054501.html
Copyright © 2011-2022 走看看