gpt4 book ai didi

ios - CGRectAddArc 的圆角

转载 作者:行者123 更新时间:2023-11-29 00:41:57 26 4
gpt4 key购买 nike

下面的代码在路径的尽头绘制圆角(绿色)。但是,不是一开始。可以做什么,以便我在开始时也有圆角(红色开始的地方)。一开始并不完美。

enter image description here

-(void)drawRect:(CGRect)rect{


CGContextRef context = UIGraphicsGetCurrentContext();

CGFloat arcStartAngle = M_PI;
CGFloat arcEndAngle = 2 * M_PI;

CGPoint startPoint = CGPointMake(0,CGRectGetMidY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMaxX(rect),CGRectGetMidY(rect));

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGFloat colors[] =
{
1.0, 0.0, 0.0, 1.0,
0.0, 1.0, 0.0, 1.0
};

CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, NULL, 2);

CGColorSpaceRelease(colorSpace);



CGMutablePathRef arc = CGPathCreateMutable();

CGPathMoveToPoint(arc, NULL, startPoint.x, startPoint.y);


CGPoint arcCenter = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
CGFloat radius = CGRectGetMidX(rect);

CGPathAddArc(arc, NULL, arcCenter.x, arcCenter.y, radius-5.0,
arcStartAngle, arcEndAngle, NO);



CGPathRef strokedArc = CGPathCreateCopyByStrokingPath(arc, NULL, 10.0f,
kCGLineCapRound, kCGLineJoinRound, 10.0f);


CGContextSaveGState(context);

CGContextAddPath(context, strokedArc);
CGContextClip(context);

CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);

CGContextDrawPath(context, kCGPathFillStroke);

CGGradientRelease(gradient);
CGContextRestoreGState(context);


}

最佳答案

我一直在研究你的问题,这就是我所发现的。您的问题与您的开始路径点有关

CGPathMoveToPoint(arc, NULL, startPoint.x, startPoint.y);

但对于您的示例,您需要从 startPoint.x + 5 开始,因为您使用的是路径宽度的 10,因此您需要修改此行并改用此行

CGPathMoveToPoint(arc, NULL, startPoint.x + 5, startPoint.y);

现在应该可以了,这就是结果

enter image description here

希望对你有帮助

关于ios - CGRectAddArc 的圆角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com