iOS ShapeLayer Demo

2017-09-04  本文已影响8人  Jamesholy
#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
上一篇下一篇

猜你喜欢

热点阅读