UIBezierPath 拒绝绘制

UIBezier Path Refusing to Draw

我正在尝试使用 UIBezierPath 绘制拱门。没有错误或警告,我看不到任何明显的错误,但它就是不会绘制。这是我的代码:

- (void)drawRect:(CGRect)rect {    

CGFloat a = 10;

CGFloat width = CGRectGetWidth(self.bounds);
CGFloat height = CGRectGetHeight(self.bounds);

CGPoint center = CGPointMake(width/2, height/2);
CGFloat radius = MAX(width, height);
CGFloat archWidth = 18;
CGFloat archLengthPerA = 5;
CGFloat startAngle = 3 * M_PI /2;
CGFloat endAngle = archLengthPerA * a + startAngle;

UIBezierPath* path = [UIBezierPath bezierPath];
[path addArcWithCenter:center
                      radius:radius
                  startAngle:startAngle
                    endAngle:endAngle
                   clockwise:YES];

path.lineWidth = archWidth;
[[UIColor colorWithRed:255 green:17 blue:0 alpha:1.0] setStroke];
[path stroke];
}

我把它放在一个单独的视图中进行测试,它在 _myString 上崩溃了,这与它有什么关系吗?我尝试添加一个断点以查看它是否可以在没有它的情况下工作,但随后又崩溃了。知道为什么它不起作用吗?

您的 radius 值太大,因此圆弧绘制在视图之外。

把它变小。例如:

CGFloat radius = MIN(width/2, height/2);

此外,您的颜色值不正确:

[[UIColor colorWithRed:255 green:17 blue:0 alpha:1.0] setStroke];

class 方法的颜色分量应该是 CGFloat,值在 0.0 到 1.0 之间