Спасибо, вы правы, я ошибся в глубоком копировании с глубоким кодированием ... спасибо за исправление

не создать копию экземпляра UIImageView, которой можно управлять независимо от первого экземпляра?

я пробовалUIImageView *tempCopy = [instance copy] но это вылетает. Есть ли другой способ?

 John07 янв. 2011 г., 03:16
UIImageView представляет собой серию UIButton, могу ли я рассматривать их как UIImage UIImageView?
 user14201907 янв. 2011 г., 03:11
Вы уверены, что не хотите, чтобы UIImage он представлял?

Ответы на вопрос(3)

что ему нужно сохранить все подпредставления, уже существующие в его представлении изображения ...

проблема использования этого подхода состоит в том, что реализация NSCoding по умолчанию не сохранит эти представления ... поэтому ему придется переопределить метод и обеспечить глубокое кодирование (для этих усилий он лучше соответствует NSCopying и выполняет глубокое копирование)

Если все, что вам нужно, это статичное изображение (подпредставления не обеспечивают взаимодействие), я бы порекомендовал сделать следующее

UIGraphicsBeginImageContext(imageView.rect.size);

[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageView *copyImageView = [[UIImageView alloc] initWithImage:viewImage];

Это обеспечит сохранение всех подпредставлений в виде статического изображения ...

если вам нужна копия с подпредставлениями, которые сохраняют свое взаимодействие ... это вам не поможет ...

Приветствую

 Mike Abdullah27 июн. 2014 г., 13:36
Я почти уверен, что ты ошибаешься на этом фронте;UIViewРеализацияNSCoding включает в себя все его подвиды
 Heavy_Bullets01 нояб. 2015 г., 17:24
Спасибо, вы правы, я ошибся в глубоком копировании с глубоким кодированием ... спасибо за исправление
Решение Вопроса

NSCopying протокол. Так что сделайте это сами: создайте новый экземпляр UIImageView и установите любое свойство из вашего оригинала, которое вас заинтересует.

 mvds07 янв. 2011 г., 03:23
Как придешь? Вам нужно только присвоить несколько значений, и все готово.
 mvds07 янв. 2011 г., 03:38
Это другой вопрос ... Вы могли бы реализовать подпрограмму копирования для одного UIView, и рекурсивно пройти через дерево представлений, используяview.subViews массив, при этом проверяя тип представления для каждого узла. Ужасное решение. Почему бы не создать вещь дважды в первую очередь?
 John07 янв. 2011 г., 03:33
Все, что я пытаюсь скопировать, это все подпредставления, есть ли простой способ, о котором я не знаю?
 John07 янв. 2011 г., 03:40
Взаимодействие с объектами сложное, и я пытаюсь упростить его, хотя мне нужно найти другой способ.
 John07 янв. 2011 г., 03:12
Есть ли способ скопировать все свойства? То, что я копирую, является чрезвычайно сложным объектом

UIImageView не соответствуетNSCopying, но это соответствуетNSCoding, Архивируйте свое представление, а затем удалите его, чтобы получить новую копию.

Для лениво склонных это выглядит так:

NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:imageView];
UIImageView *copy = [NSKeyedUnarchiver unarchiveObjectWithData:data];
 ninjaneer21 июн. 2014 г., 01:11
Кто-нибудь может прокомментировать производительность этого?
 Mike Abdullah26 апр. 2015 г., 19:11
Вот, пожалуйста, пример добавлен
 Mike Abdullah27 июн. 2014 г., 13:39
Вы смотрите примерно вдвое больше времени, необходимого для загрузки пера (при условии, что перо уже находится в памяти, а не на диске). Инстанциация от пера - это в основном только вторая половина моего ответа, так что вы только добавляете дополнительную работу по созданию архива
 Mobile Bloke25 апр. 2015 г., 17:27
Любой пример кода для этого?

Ваш ответ на вопрос