UIBezier路径拒绝画画

时间:2016-08-12 22:42:42

标签: 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, 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上崩溃了,所以它与它有什么关系?我尝试添加一个断点来查看它是否在没有它的情况下工作但是它再次崩溃了。任何想法为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

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

缩小规模。例如:

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