Рисование множества UIBezierPaths в представлении

Я рисую несколько UIBezierPath в представлении на основе движений пальцев.

Каждый раз, когда цикл касаний - Начало / Перемещение / Завершение - завершается, я сохраняю точки и создаю UIBezierPath , который сохраняется в массиве с именем bezierArray . У меня есть еще один массив под названием bezierArrayColors , в котором хранятся цвета каждого пути.

Проблема в следующем. Класс использует drawRect . Насколько я могу судить, каждый раз, когда drawRect запускается, он должен рисовать все пути, которые когда-либо были созданы, и теперь приложение работает медленно.

Это мой drawRect . . Я знаю, что это довольно неаккуратно, но я не понимаю, как это можно сделать.

- (void)drawRect:(CGRect)rect {
   for (int i=0; i<[self.bezierArray count]; i++) {
        UIBezierPath *aPath = (UIBezierPath*)[self.bezierArray objectAtIndex:i];
        UIColor *aColor = (UIColor*)[self.bezierArrayColor objectAtIndex:i];
    [aPath setLineWidth:LINE_WIDTH];

    [aColor setStroke];
    [aPath stroke];
    }
}

Есть ли способ обвести UIBezierPath разными цветами или, возможно, шириной, используя подпути? Я имею в виду, чтобы изменить цвет, ширину и другие свойства подпути? Это позволило бы мне использовать один UIBezierPath с несколькими разными подпутьями. Я бы хотел, чтобы один Безье можно было нарисовать и оставить там без необходимости каждый раз перерисовывать. Что мне не хватает?

6
задан STW 7 August 2013 в 13:51
поделиться