zoukankan      html  css  js  c++  java
  • 基本动画CABasicAnimation

    基本动画CABasicAnimation 结束之后,默认闪回初始状态,那怎么解决呢?

    position需要设备两个属性:

    1     // MARK: - 结束后不要闪回去
    2     anim.removedOnCompletion = NO;
    3     anim.fillMode = kCAFillModeForwards;

    设置之后,不会再闪回去,但其实控件的位置并未改变,还在原来的位置,只是“显示层”挪到了新位置。

    可以通过动画的代理方法来实现:

        // MARK: - 通过代理方法,修正按钮的位置!
        // 这个代理写在了NSObject的分类中,不需要尊守任何协议
        anim.delegate = self;

    实现代理方法:

     1 #pragma mark - 核心动画的代理方法
     2 // 核心动画开始
     3 - (void)animationDidStart:(CAAnimation *)anim {
     4 
     5     NSLog(@"核心动画开始");
     6     
     7 }
     8 
     9 // 核心动画结束
    10 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
    11     
    12 //    NSLog(@"核心动画结束!");
    13     // 在核心动画结束后,将控件的真实位置挪过来!
    14     _btn.center = CGPointMake(150, 500);
    15     
    16     // 将layer中的动画移除掉,保证不会闪了!
    17     [_btn.layer removeAllAnimations];
    18 }

    如果是transform.scale,transform.rotation,只需要设置anim.removedOnCompletion = NO;即可

    常见属性:

     1 CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
     2 
     3     basicAnimation.duration = 2;
     4     
     5     // 这三个属性同时最多只能设置2个
     6     basicAnimation.fromValue = @100;
     7     basicAnimation.byValue = @50;
     8     basicAnimation.toValue = @500;
     9     
    10     basicAnimation.repeatCount = CGFLOAT_MAX;
    11     
    12     basicAnimation.removedOnCompletion = NO;
    13     basicAnimation.fillMode = kCAFillModeForwards;
    14     
    15     [_btn.layer addAnimation:basicAnimation forKey:nil];
  • 相关阅读:
    Spring MVC之@RequestMapping 详解
    Liferay 6.1开发学习
    学习软件产品包装
    gzip优化网络传输量提高传输效率[转]
    spring mvc事务注解
    Spring MVC 注解[转]
    WebMagic的设计参考了业界最优秀的爬虫Scrapy
    springMVC 注解版
    微信开放JS-SDK,助力网页开发
    解救设计师的8大神器
  • 原文地址:https://www.cnblogs.com/panda1024/p/6260255.html
Copyright © 2011-2022 走看看