Почему мой цикл инкрементно корректирует инсульт
В этом уроке по компьютерной графике нас просят увеличить цвет кругов, нарисованных на виде в цикле for. Для этого я установил массив с цветами, а затем попытался реализовать цвета внутри цикла fore с использованием приращения i++ для перехода к следующему объекту в индексе. В симуляторе я вижу все круги одного цвета.
Как настроить цикл for для увеличения цвета, чтобы нарисовать один цвет на круг.
//set array of colors up
NSArray *colors = [[NSArray alloc]initWithObjects:[UIColor greenColor], [UIColor redColor], [UIColor blueColor], [UIColor purpleColor], [UIColor orangeColor], [UIColor greenColor], [UIColor redColor], [UIColor blueColor], [UIColor purpleColor], [UIColor orangeColor], [UIColor greenColor], [UIColor redColor], [UIColor blueColor], [UIColor purpleColor], [UIColor orangeColor], [UIColor greenColor], [UIColor redColor], [UIColor blueColor], [UIColor purpleColor], nil];
CGRect bounds = [self bounds];
//figure out center point of the bounds rectangle
CGPoint center;
center.x = bounds.origin.x + bounds.size.width / 2.0;
center.y = bounds.origin.y + bounds.size.height / 2.0;
//the radius fo the circle should be nearly as big as the view
float maxRadius = hypot(bounds.size.width, bounds.size.height)/2.0;
UIBezierPath *path = [[UIBezierPath alloc]init];
int i = 0;
for (float currentRadius = maxRadius; currentRadius > 0; currentRadius -= 20) {
//we have to add this because when drawing several arcs UIBezierPath does not pick up the pencil between arcs and this moves the starting point of the next "stroke"
[path moveToPoint:CGPointMake(center.x + currentRadius, center.y)];
[path addArcWithCenter:center radius:currentRadius //note this is the current radius!
startAngle:0.0 endAngle:M_PI*2.0 clockwise:YES];
[self setCircleColor:[colors objectAtIndex:i]];
i++;
}
1 ответ
Решение
Путь Безье имеет только один цвет обводки. Вы должны создать путь, установить цвет и обводку в каждой итерации цикла. Похоже, что вы добавляете каждый концентрический круг к траектории, что означает, что все круги будут нарисованы (или перерисованы) с вашим последним цветом обводки.