• CAShapLayer的使用1


    1.添加橙色圆环

    - (CAShapeLayer *)shapeLayer {
        if (!_shapeLayer) {
            _shapeLayer = [CAShapeLayer layer];
            CGRect rect = {28,50,100,100};
            //bezierPathWithOvalInRect圆形路径 bezierPathWithRect 方形路径
            UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect: rect];
            _shapeLayer.strokeColor = [UIColor orangeColor].CGColor;
            _shapeLayer.lineWidth = 4;
            _shapeLayer.fillColor = [UIColor clearColor].CGColor;
            _shapeLayer.lineCap = kCALineCapRound;
            _shapeLayer.path = path.CGPath;
        }
        return _shapeLayer;
    }

    2.添加进度条

    - (CAShapeLayer *)progressLayer {
        if (!_progressLayer) {
            _progressLayer = [CAShapeLayer layer];
            _progressLayer.frame = self.shapeLayer.bounds;
            _progressLayer.fillColor = [UIColor clearColor].CGColor;
            _progressLayer.strokeColor = [UIColor whiteColor].CGColor;
            _progressLayer.lineWidth = 4;
            _progressLayer.lineCap = kCALineCapRound;
            CGRect rect = {28,50,100,100};
            UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect: rect];
            _progressLayer.path = path.CGPath;
        }
        return _progressLayer;
    }

    3.添加渐变颜色

    [self.view.layer addSublayer: self.shapeLayer];
        [self.view.layer addSublayer: self.progressLayer];
        
        
        CAGradientLayer * gradientLayer1 = [CAGradientLayer layer];
        gradientLayer1.frame = self.view.bounds;
        
        CGColorRef red = [UIColor redColor].CGColor;
        CGColorRef purple = [UIColor purpleColor].CGColor;
        CGColorRef yellow = [UIColor yellowColor].CGColor;
        CGColorRef orange = [UIColor orangeColor].CGColor;
        
        gradientLayer1.colors = @[(__bridge id)red,(__bridge id)purple,(__bridge id)yellow,(__bridge id)orange];
        gradientLayer1.locations = @[@0.3, @0.6,@0.8,@1.0];
        gradientLayer1.startPoint = CGPointMake(0.5, 1);
        gradientLayer1.endPoint = CGPointMake(0.5, 0);
        
        //一定要设置gradientLayer.mask = self.progressLayer;这样才能显示中间的内容,如果不设置mask,那么就只有渐变图层了
        gradientLayer1.mask = self.progressLayer;
        [self.view.layer addSublayer: gradientLayer1]; //添加渐变

    4.执行动画

    - (IBAction)change:(UISlider * )sender {
        CGFloat cV = sender.value * 100;
        [self updateProgressWithNumber: cV];
        
    }
    
    
    - (void)updateProgressWithNumber:(NSUInteger)number {
        [CATransaction begin];
        [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
        [CATransaction setAnimationDuration:0.5];
        self.progressLayer.strokeEnd =  number / 100.0;
        NSLog(@"%@",[NSString stringWithFormat:@"%@%%", @(number)]);
        [CATransaction commit];
    }

  • 相关阅读:
    构建之法 读书笔记二
    聚集索引,非聚集索引,覆盖索引
    最佳左前缀法则
    悲观锁和乐观锁
    JVM (三)- GC 垃圾回收器
    JVM 内存模型
    Java内存模型(JMM) 和 JVM 内存模型区别
    byType 和 byName 的区别
    Spring注入方式
    Java高性能编程-java基础-1.1.5线程通信
  • 原文地址:https://www.cnblogs.com/qzp2014/p/5548942.html
Copyright © 2020-2023  润新知