Как вы создаете копию экземпляра UIImageView? - PullRequest
12 голосов
/ 07 января 2011

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

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

Ответы [ 3 ]

17 голосов
/ 07 января 2011

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

7 голосов
/ 07 января 2011

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

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

0 голосов
/ 19 марта 2013

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

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

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

UIGraphicsBeginImageContext(imageView.rect.size);

[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];

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

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

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

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

Привет

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