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