/*让半径等于期望半径的一半 lineWidth等于期望半径 就可以画圆*/
可以看出layer的走势是从圆边的中间一半在圆外 一半在圆内 因此让半径等于期望半径的一半 lineWidth等于期望半径
- (void)viewDidLoad { [super viewDidLoad]; for (NSInteger i=0; i<5; i++) { [self itemViewWithOne:72*i*M_PI/180.0 two:72*(i+1)*M_PI/180.0]; } } - (UIView *)bgView { if (!_bgView) { _bgView = [[UIView alloc] init]; _bgView.backgroundColor = [UIColor grayColor]; _bgView.bounds = CGRectMake(0, 0, 100, 100); _bgView.center = self.view.center; [self.view addSubview:_bgView]; } return _bgView; } - (void)itemViewWithOne:(CGFloat)starAngle two:(CGFloat)endAngle { /*让半径等于期望半径的一半 lineWidth等于期望半径 就可以画圆*/ CAShapeLayer *layer = [CAShapeLayer layer]; UIBezierPath *bezierPath = [UIBezierPath bezierPath]; [bezierPath addArcWithCenter:CGPointMake(50,50) radius:25 startAngle:starAngle endAngle:endAngle clockwise:YES]; layer.path = bezierPath.CGPath; // bezierPath.lineCapStyle = kCGLineCapButt; layer.lineWidth = 50; UIColor *color = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1]; // UIColor *color1 = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1]; layer.strokeColor = color.CGColor; // 最好 为clearColor 设置颜色是方便观察 layer.fillColor = [UIColor yellowColor].CGColor; //默认 layer.lineCap = kCALineCapButt; [self.bgView.layer addSublayer:layer]; CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; basic.duration = 1.1; basic.fromValue = @(0.1f); basic.toValue = @(1.0f); [layer addAnimation:basic forKey:@"basic"]; }
结果如下:
时间: 2024-10-07 18:07:06