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 之间
我正在尝试使用 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 之间