码迷,mamicode.com
首页 > 其他好文 > 详细

核心动画的使用 - 活动指示器

时间:2019-02-18 23:23:33      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:prope   1.0   com   创建   技术   1.2   动画   object   缩放动画   

1、活动指示器

  • 1.1 创建活动指示器

    @property (nonatomic, strong) UIView *activityIndicatorView;
    
    self.activityIndicatorView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
    self.activityIndicatorView.backgroundColor = [UIColor redColor];
    [self.view addSubview:self.activityIndicatorView];
    
    // 创建复制图层
    CAReplicatorLayer *repLayer = [CAReplicatorLayer layer];                    // 可以把图层里面所有子层复制
    repLayer.frame = self.activityIndicatorView.bounds;
    [self.activityIndicatorView.layer addSublayer:repLayer];
    
    // 创建指示器图层
    CALayer *layer = [CALayer layer];
    layer.transform = CATransform3DMakeScale(0, 0, 0);
    layer.position = CGPointMake(self.activityIndicatorView.bounds.size.width / 2, 20);
    layer.bounds = CGRectMake(0, 0, 10, 10);
    layer.backgroundColor = [UIColor greenColor].CGColor;
    [repLayer addSublayer:layer];
    
    // 设置缩放动画
    CGFloat duration = 1.0;
    CABasicAnimation *anim = [CABasicAnimation animation];
    anim.keyPath = @"transform.scale";
    anim.fromValue = @1;
    anim.toValue = @0;
    anim.duration = duration;
    anim.repeatCount = MAXFLOAT;
    [layer addAnimation:anim forKey:nil];
    
    // 设置复制层中子层
    CGFloat count = 20;
    CGFloat angle = M_PI * 2 / count;
    repLayer.instanceCount = count;                                             // 设置复制层里面有多少个子层,包括原始层
    repLayer.instanceTransform = CATransform3DMakeRotation(angle, 0, 0, 1);     // 设置复制子层偏移量,不包括原始层,相对于原始层 x 偏移
    repLayer.instanceDelay = duration / count;                                  // 设置复制层动画延迟时间
  • 1.2 效果

    技术图片

核心动画的使用 - 活动指示器

标签:prope   1.0   com   创建   技术   1.2   动画   object   缩放动画   

原文地址:https://www.cnblogs.com/CH520/p/9480746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!