• CALayer 自定义属性绘制动画


    创建CircleLayer继承CALayer,添加新属性angle。
    @interfaceCircleLayer :CALayer
    @property(nonatomic,assign)CGFloatangle;
    @end
     
    覆盖父类方法,添加新的属性动画键值,返回YES表示给定的属性发生变化时导致layer的内容重绘
    + (BOOL)needsDisplayForKey:(NSString*)key
    {
       if([keyisEqualToString:@"angle"]) {
           returnYES;
        }
       return[superneedsDisplayForKey:key];
    }
     
    代码绘制部分
    - (void)drawInContext:(CGContextRef)ctx
    {
        CGFloat lineWidth = 3.0f;
        CGPoint centerPoint = CGPointMake(CGRectGetWidth(self.bounds)/2, CGRectGetHeight(self.bounds)/2);
       
        CGContextBeginPath(ctx);
        CGContextAddArc(ctx, centerPoint.x, centerPoint.y, CGRectGetWidth(self.bounds)/2 -lineWidth/2, 0.0f, self.angle, 0);
        CGContextEndPage(ctx);
       
        CGContextSetStrokeColorWithColor(ctx, [UIColorredColor].CGColor);
        CGContextSetLineWidth(ctx, lineWidth);
        CGContextStrokePath(ctx);
    }
     
    创建CABasicAnimation动画
    CircleLayer *layer = [CircleLayer layer];
    layer.frame = CGRectMake(10, 100, 40, 40);
       
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"angle"];
    animation.fromValue = @(0.0f);
    animation.toValue = @(2*M_PI);
    animation.repeatCount = MAXFLOAT;
    animation.duration = 3.0f;
    [layer addAnimation:animation forKey:@"angle_key"];
     
     
  • 相关阅读:
    适配问题
    屏幕适配
    软键盘适配
    即时通讯
    缩减APK包大小
    基于RulesEngine的业务规则实现
    基于NXBRE规则引擎实现的柔性折扣策略
    SQL Server代码如何快速格式化
    SQL Server 跨库同步数据
    HTML+AngularJS+Groovy如何实现登录功能
  • 原文地址:https://www.cnblogs.com/shuleihen/p/4087392.html
Copyright © 2020-2023  润新知