• iOS之CAShapeLayer属性简介



    1、CAShapeLayer需要和贝塞尔曲线一块使用!

    #import <QuartzCore/CALayer.h>
    
    NS_ASSUME_NONNULL_BEGIN
    CA_CLASS_AVAILABLE (10.6, 3.0, 9.0, 2.0)
    @interface CAShapeLayer : CALayer
    
    //CGPathRef路径,不支持隐式动画
    @property(nullable) CGPathRef path;
    
    //填充颜色
    @property(nullable) CGColorRef fillColor;
    
    //填充规则(默认是非零法则) 齐偶原则
    @property(copy) NSString *fillRule;
    
    //路径颜色
    @property(nullable) CGColorRef strokeColor;
    
    //部分绘制[0-1],开始值和结束值
    @property CGFloat strokeStart;
    @property CGFloat strokeEnd;
    
    //先宽
    @property CGFloat lineWidth;
    
    //内角和外角距离
    @property CGFloat miterLimit;
    
    //线端口类型
    @property(copy) NSString *lineCap;
    
    //线连接处类型
    @property(copy) NSString *lineJoin;
    
    //绘制虚线路径
    //线型模板的起始位置
    @property CGFloat lineDashPhase;
    //线型模板 数组实线和虚线循环
    @property(nullable, copy) NSArray<NSNumber *> *lineDashPattern;
    
    @end
    
    /* `fillRule' values. */
    
    CA_EXTERN NSString *const kCAFillRuleNonZero    //非零
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    CA_EXTERN NSString *const kCAFillRuleEvenOdd    //齐偶
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    
    /* `lineJoin' values. */
    
    CA_EXTERN NSString *const kCALineJoinMiter
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    CA_EXTERN NSString *const kCALineJoinRound
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    CA_EXTERN NSString *const kCALineJoinBevel
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    
    /* `lineCap' values. */
    
    CA_EXTERN NSString *const kCALineCapButt
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    CA_EXTERN NSString *const kCALineCapRound
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    CA_EXTERN NSString *const kCALineCapSquare
    CA_AVAILABLE_STARTING (10.6, 3.0, 9.0, 2.0);
    
    NS_ASSUME_NONNULL_END

    2、简单使用

    - (void)starShowCAShapeLayer{
        UIBezierPath *bezi = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 100, 100)];
        CAShapeLayer *layer = [[CAShapeLayer alloc] init];
        layer.path = bezi.CGPath;
        layer.strokeColor = [UIColor redColor].CGColor;
        layer.fillColor = [UIColor whiteColor].CGColor;
        layer.lineWidth = 15;
        layer.strokeStart = 0;
        layer.strokeEnd = 0;
        layer.lineDashPattern = @[@4,@4];
        [self.showView.layer addSublayer:layer];
        self.layer = layer;
        
        self.waterTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(waterAction) userInfo:nil repeats:YES];
    }
    - (void)waterAction{
        if (self.layer.strokeEnd >=1) {
            [self.waterTimer invalidate];
            self.waterTimer = nil;
            return;
        }else{
            self.layer.strokeEnd +=0.02;
        }
    }

    效果图

  • 相关阅读:
    老李分享:qtp自动化测试框架赏析-关键字自动化测试框架
    QTP自动化测试培训:描述编程之WebElement
    测试开发Python培训:自动发布新浪微博-技术篇
    老李分享:开发python的unittest结果输出样式
    布隆过滤器
    缓存击穿、缓存穿透、缓存雪崩
    JVM锁优化
    Java 异常体系
    常用的SQL调优
    Mysql 索引
  • 原文地址:https://www.cnblogs.com/xianfeng-zhang/p/7743627.html
Copyright © 2020-2023  润新知