Боюсь, этого нельзя сделать.Каждый экземпляр UIView можно добавить на экран только один раз.
Если все ваши представления имеют похожие преобразования, вам может повезти, если вы используете что-то вроде CAReplicatorLayer, который представляет собой систему для автоматического создания дубликатов CALayers с различными преобразованиями.
Это будет работать только в том случае, если все ваши виды расположены в виде сетки, круга или чего-то еще.Если они просто расставлены случайным образом, это не поможет.
Если вы пытаетесь нарисовать более 100 видов, вы, вероятно, просто столкнетесь с фундаментальным потолком производительности Core Animation на iOS.
Следующим подходом будет использование OpenGL для рисования ваших выводов, возможно, с использованием библиотеки, такой как Sparrow или Cocos2D , чтобы упростить рисование нескольких преобразованных изображений с помощью OpenGL (I ').Я рекомендую Sparrow, поскольку он лучше интегрируется с другими элементами управления UIKit - Cocos больше подходит для игр).
ОБНОВЛЕНИЕ:
Этот код не нужен:
mut = [(NSArray *)([self.annotationsDict objectForKey:identifier]) mutableCopy];
if([[mut objectAtIndex:PIN] isKindOfClass:[PinView class]]){
pinView = ((PinView *)[mut objectAtIndex:PIN]);
pinView.transform = transform;
[mut replaceObjectAtIndex:PIN withObject:pinView];
}
Кодниже достаточно, потому что установка преобразования не изменяет указатель на объект, поэтому он обновит объект в массиве, даже если массив не изменяем, а объекты массива объявлены как 'id', поэтому они ненужно привести, если вы присваиваете их переменной известного типа.
mut = [self.annotationsDict objectForKey:identifier];
if([[mut objectAtIndex:PIN] isKindOfClass:[PinView class]]){
pinView = [mut objectAtIndex:PIN];
pinView.transform = transform;
}
Я бы также подумал, что вы можете снять проверку isKindOfClass:
, если вы когда-либо используете thиндексы массива ose для этих типов объектов.Это может показаться хорошей мерой предосторожности, но это приводит к снижению производительности, если вы делаете это снова и снова в цикле.
Но для 10 представлений я просто не ожидал бы, что это будет так медленновсе.Вы пробовали это, не перемещая центры выноски.Это работает лучше?Если это так, вы можете ограничить это только выносками, которые в данный момент видны, или переместить их, используя CGAffineTransformTranslate вместо установки центра (что может быть немного быстрее).