Как создать копию экземпляра UIImageView, который можно манипулировать независимо от первого экземпляра?
Я пробовал UIImageView *tempCopy = [instance copy]
, но он сработает. Есть ли другой способ?
Как создать копию экземпляра UIImageView, который можно манипулировать независимо от первого экземпляра?
Я пробовал UIImageView *tempCopy = [instance copy]
, но он сработает. Есть ли другой способ?
Вероятно, это сбой, потому что UIImageView не соответствует протоколу NSCopying. Сделайте это самостоятельно: создайте новый UIImageView и установите любое свойство из вашего оригинала, который вам интересен.
UIImageView
не соответствует NSCopying
, но соответствует NSCoding
. Архивируйте свое мнение, а затем де-архивируйте его, чтобы получить совершенно новую копию.
Для ленивого наклона это выглядит так:
NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:imageView];
UIImageView *copy = [NSKeyedUnarchiver unarchiveObjectWithData:data];
В ответ на ответ Майка Абдуллы... вопрос в том, что ему нужно сохранить все подъязыки, уже существующие в его изображении...
проблема использования этого подхода заключается в том, что реализация NSCoding по умолчанию не сохранит эти представления... поэтому он должен будет переопределить метод и обеспечить глубокое кодирование (для этих усилий он лучше соответствует NSCopying и выполняет глубокие копия)
Если все, что вам нужно, это статическое изображение (subviews не обеспечивают взаимодействия), я бы рекомендовал сделать следующее
UIGraphicsBeginImageContext(imageView.rect.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *copyImageView = [[UIImageView alloc] initWithImage:viewImage];
Это гарантирует, что tue subviews все будет сохранено как статическое изображение...
если вам нужна копия с субвью, которая сохраняет взаимодействие... это не поможет вам...
Привет