Objective c UIBezier路径拒绝绘制

Objective c UIBezier路径拒绝绘制,objective-c,uibezierpath,Objective C,Uibezierpath,我正在尝试使用UIBezierPath绘制拱门。没有错误或警告,我看不到任何明显的错误,但它只是不会画。这是我的代码: - (void)drawRect:(CGRect)rect { CGFloat a = 10; CGFloat width = CGRectGetWidth(self.bounds); CGFloat height = CGRectGetHeight(self.bounds); CGPoint center = CGPointMake(width/2, heigh

我正在尝试使用
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];
}

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

您的
半径值太大,因此圆弧在视图外绘制

把它弄小一点。例如:

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

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

[[UIColor COLOR WITH RED:255 green:17 blue:0 alpha:1.0]设定行程]


该类方法的颜色组件应为CGFloat,值介于0.0和1.0之间

使用调试器逐步执行,并查看
\u myString
a
startAngle
endAngle
具有哪些值。最有可能的是
a
为0,因此
startAngle
endAngle
相同,因此您要求的是尺寸为零的圆弧,当然不会绘制任何图形。您可以轻松地更改代码,以检查
a
值不同时会发生什么情况,例如,
CGFloat a=1.0
@KurtRevis刚刚检查过,它们有值,所以不是那样。那么它们有什么值呢?给我们一个机会。