美文网首页
iOS ShapeLayer Demo

iOS ShapeLayer Demo

作者: Jamesholy | 来源:发表于2017-09-04 13:54 被阅读8次
    #import "myView.h"
    
    @interface myView ()
    
    /**<##>*/
    @property(nonatomic, strong) CAShapeLayer *shapeLayer;
    @end
    
    @implementation myView
    
    #pragma mark - 初始化
    - (instancetype)initWithFrame:(CGRect)frame {
        self = [super initWithFrame:frame];
        if (self) {
            // 初始化默认数据
            [self createDefaultData];
            // 初始化界面
            [self createUI];
            // 布局界面
            [self createConstraints];
        }
        return self;
    }
    
    - (void)setValue:(CGFloat)value {
        _value = value;
        UIBezierPath * path = [UIBezierPath bezierPath]; // 创建路径
     
        [path addArcWithCenter:CGPointMake(100, 100) radius:75 startAngle:0 endAngle:( self.value * M_PI * 2) clockwise:YES]; // 绘制一个圆弧
        path.lineCapStyle  = kCGLineCapRound; //线条拐角
        path.lineJoinStyle = kCGLineCapRound; //终点处
    
    //        [path moveToPoint:CGPointMake(20, 100)];
    //        // 给定终点和两个控制点绘制贝塞尔曲线
    //        [path addCurveToPoint:CGPointMake(220, 100) controlPoint1:CGPointMake(_value * 100, 20) controlPoint2:CGPointMake(120, _value*50)];
    //
        _shapeLayer.path = path.CGPath;
        
    }
    //-(void)drawRect:(CGRect)rect {
    //    [super drawRect:rect];
    //    // 绘图
    //    [[UIColor redColor] set];
    //
    //    UIBezierPath* path = [UIBezierPath bezierPath];
    //
    //    path.lineWidth     = 5.f;
    //    path.lineCapStyle  = kCGLineCapRound;
    //    path.lineJoinStyle = kCGLineCapRound;
    //
    //    [path moveToPoint:CGPointMake(20, 100)];
    //    // 给定终点和两个控制点绘制贝塞尔曲线
    //    [path addCurveToPoint:CGPointMake(220, 100) controlPoint1:CGPointMake(self.value, 20) controlPoint2:CGPointMake(120, self.value* 1.3)];
    //
    //    [path stroke];
    //}
    
    
    #pragma mark - 初始化默认数据
    - (void)createDefaultData {
        
    }
    
    #pragma mark - 初始化界面
    - (void)createUI {
        self.backgroundColor = [UIColor redColor];
        if (!_shapeLayer) {
            _shapeLayer = [[CAShapeLayer alloc] init];
            _shapeLayer.fillColor = [UIColor clearColor].CGColor;
            _shapeLayer.strokeColor = [UIColor redColor].CGColor;
            _shapeLayer.lineWidth = 10;
            //_shapeLayer.strokeStart = 0.4;
            
             _shapeLayer.lineCap = kCALineCapRound;
        }
        //[self.layer addSublayer:self.shapeLayer];
        self.layer.mask = _shapeLayer;
    }
    
    #pragma mark - 布局界面
    - (void)createConstraints {
        //__weak typeof(self) weakSelf = self;
        
    }
    
    
    #pragma mark ----------------------------- 公用方法 ------------------------------
    
    
    @end
    

    相关文章

      网友评论

          本文标题:iOS ShapeLayer Demo

          本文链接:https://www.haomeiwen.com/subject/hggkdxtx.html