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刚刚检查过,它们有值,所以不是那样。那么它们有什么值呢?给我们一个机会。