【问题标题】:Changing the UIbezierpath Arc with gradient layer IOS用渐变层IOS改变UIbezierpath Arc
【发布时间】:2017-09-26 16:50:38
【问题描述】:

我只能在圆弧中用渐变色填充圆弧你能提供解决方案enter image description here

CGContextRef ctx = UIGraphicsGetCurrentContext();
UIBezierPath *arc = [UIBezierPath bezierPathWithArcCenter:barCenter radius:barRadius startAngle:fmodf(MIN_ANGLE+M_PI, 2*M_PI) endAngle:fmodf(MAX_ANGLE+M_PI, 2*M_PI) clockwise:YES];
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineWidth(ctx, kArcThickness);


CGContextSetGrayStrokeColor(ctx, 0.6, 1.0);
CGContextAddPath(ctx, arc.CGPath);
CGContextStrokePath(ctx);




// knob to move the slider

CGContextSetLineWidth(ctx, 2.0);
CGContextSetFillColorWithColor(ctx, [UIColor whiteColor].CGColor);
CGContextAddArc(ctx, knobCenter.x, knobCenter.y, knobRadius, 0, 2*M_PI, 1);
CGContextDrawPath(ctx, kCGPathFill);

【问题讨论】:

  • 你需要什么输出..?
  • 我需要一条线宽为 10 的弧线,并且弧线颜色需要是渐变色

标签: ios objective-c iphone


【解决方案1】:

尝试使用下面的代码..

//list of components
CGFloat components[8] = {
    0.0, 0.0, 1.0, 1.0,     // Start color - Blue
    1.0, 0.0, 1.0, 1.0 };   // End color - Violet

CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, components, NULL, 2);
CGColorSpaceRelease(baseSpace), baseSpace = NULL;

//Gradient direction
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

//Draw the gradient
CGContextDrawLinearGradient(ctx, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient), gradient = NULL;

CGContextRestoreGState(ctx);

【讨论】:

  • 这是框架的矩形,我只需要弧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多