Я создаю приложение, которое отображает большие чертежи в мозаичном представлении с различными аннотациями (фигурами), наложенными на изображение. Я рисую эти фигуры (в основном эллипсы, линии и многоугольники) с помощью UIBezierPaths, но при этом используется значительный объем памяти. Это мое первое приложение, поэтому буду признателен за любой совет.
Это пример из подкласса UIView, который рисует эллипсы. Я знаю, что использование представления изображения для отображения пути не обязательно, но, похоже, оно работает лучше, чем альтернатива. Я надеялся, что когда у меня будет UIImage, я смогу избавиться от памяти, используемой путем, но, как вы можете видеть на моем снимке экрана ниже, это на самом деле не работает.
CGSize size = CGSizeMake(self.frame.size.width+self.lineWeight,
self.frame.size.height+self.lineWeight);
UIGraphicsBeginImageContext(size);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
[self.fillColor setFill];
[path closePath];
[path fill];
CGRect strokeRect = CGRectMake(self.lineWeight/2.0, self.lineWeight/2.0,
size.width-self.lineWeight*2.0, size.height-self.lineWeight*2.0);
UIBezierPath *strokePath = [UIBezierPath bezierPathWithOvalInRect:strokeRect];
strokePath.lineWidth = self.lineWeight;
[self.lineColor setStroke];
[strokePath stroke];
[strokePath closePath];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self addSubview:imageView];
Вот скриншот из инструмента, показывающий использование памяти при отображении изображения с 26 фигурами, в основном эллипсами.
Некоторые чертежи, которые я показываю, могут иметь до 500 форм, поэтому мне действительно не помешал бы совет, как лучше этого добиться. Спасибо!