UIBezierPath与CAShapeLayer结合画扇形

/*让半径等于期望半径的一半 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

UIBezierPath与CAShapeLayer结合画扇形的相关文章

放肆地用 UIBezierPath 和 CAShapeLayer 画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: Objective-C 1 2 3 4 5 let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UICol

使用UIBezierPath和CAShapeLayer画各种图形 (转)

http://www.cocoachina.com/cms/wap.php?plg_nld=1&plg_auth=1&plg_nld=1&plg_dev=1&plg_uin=1&plg_usr=1&plg_vkey=1&plg_nld=1&action=article&id=15251&plg_auth=1&plg_uin=1&plg_dev=1&plg_nld=1&plg_usr=1&

iOS 使用UIBezierPath和CAShapeLayer画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColor().CGColo

放肆地使用UIBezierPath和CAShapeLayer画各种图形

CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: 1 2 3 4 5 let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColo

使用UIBezierPath和CAShapeLayer画各种图形

使用UIBezierPath和CAShapeLayer画各种图形 CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundCo

UIBezierPath 和 CAShapeLayer 画画图

画一个头戴小圆的五边形: - (void)drawPentagon{ //(1)UIBezierPath对象 UIBezierPath *aPath = [UIBezierPath bezierPath]; //开始点 [aPath moveToPoint:CGPointMake(100.0, 1.0)]; //划线点 [aPath addLineToPoint:CGPointMake(200.0, 40.0)]; [aPath addLineToPoint:CGPointMake(160, 1

Swift-贝赛尔曲线画扇形、弧线、圆形、多边形——UIBezierPath实现App下载时的动画效果

上篇文章提到了使用贝赛尔曲线实现画图板(传送门),顿时就对贝赛尔曲线兴趣大增有木有. 之所以接触贝赛尔曲线,多亏了师父.周五下班前师父给我留了个任务,让我周末回家研究研究 iPhone 手机下载 App 时的效果是怎么实现的(不知道效果的童鞋请看下图) 如果所示,下载 App 的过程效果,就是 App 图标中间有一个顺时针旋转的圆圈.当一圈走完时 App 就下载完成了. 刚给我交代这个任务的时候,顿时感觉好难有木有...(主要是因为那个时候我还不知道贝赛尔曲线) 抛开一切复杂内容不谈,我们今天只

UIBezierPath和CAShapeLayer配合肆意画图

一.CAShapeLayer CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形 使用CAShapeLayer 绘制一个矩形 let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor.blackColor().CGColor view.layer.addSublayer(layer)   CASh

UIBezierPath和CAShapeLayer的关系

CAShapeLayer是基于贝塞尔曲线而存在的, 如果没有贝塞尔曲线提供路径来画出图形, CAShapeLayer就没有存在的意义 下面我画了矩形和椭圆形, 代码如下: #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self createOval]; } //