2016-08-12 4 views
-1

Я пытаюсь нарисовать арку, используя UIBezierPath. Нет никаких ошибок или предупреждений, и я не вижу никаких явных ошибок, но он просто не будет рисовать. Это мой код:Путь UIBezier, отказавшийся рисовать

- (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 так что ничего с ним делать? Я попытался добавить точку останова, чтобы увидеть, работает ли она без нее, но затем она снова разбилась. Любые идеи, почему это не работает?

+0

Шага через него с отладчиком и посмотреть, какие значения '' _myString' и A' и '' startAngle' и endAngle' есть. Скорее всего 'a' равно 0, поэтому' startAngle' совпадает с 'endAngle', поэтому вы запрашиваете дугу с нулевым размером, что, конечно же, ничего не рисует. Вы можете легко изменить свой код, чтобы проверить, что происходит, когда 'a' - разные значения, например,' CGFloat a = 1.0; '. –

+0

@ KurtRevis просто проверен, и у них есть значения, поэтому его не так –

+0

Итак, какие значения у них есть? Дайте нам [MCVE] (http://stackoverflow.com/help/mcve). –

ответ

1

Ваше значение radius слишком велико, поэтому дуга вытягивается за пределы вида.

Уменьшить размер. Например:

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

Кроме того, ваши цветовые значения неверны:

[[UIColor colorWithRed: 255 зеленый: 17 синий: 0 альфа: 1,0] setStroke];

цветовых компоненты этого метода класса должны быть CGFloat со значениями от 0,0 до 1,0