Простой или эффективный способ скопировать растровое представление из одного представления в другое? - PullRequest
2 голосов
/ 11 марта 2010

У меня есть anViewA и anViewB. Это простые объекты UIView с множеством подпредставлений. Мне нужно только растровое представление или, скажем, «изображение» anViewA, скопированное в anViewB, так что anViewB выглядит как anViewA (без подпредставлений, подобных anViewA).

Сначала я попытался использовать сообщение -copy, но, к сожалению, UIView не соответствует протоколу NSCopying.

Есть ли еще один способ сделать "визуальную копию" представления?

Ответы [ 2 ]

4 голосов
/ 11 марта 2010

Очень простой способ, но с некоторыми ограничениями (см. renderInContext описание)

#import <QuartzCore/CALayer.h>

...

UIGraphicsBeginImageContext(anViewA.frame.size);
[anViewA.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * anImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
anViewB.image = anImage;
1 голос
/ 11 марта 2010

Вам необходимо нарисовать CGLayer каждого подпредставления A в один CGLayer представления B.

Начните с CGLayer of A, перетяните его в B, затем идите вниз по иерархии представлений, повторяя рисование, пока вы не перетянете все в CGLayer B. В итоге вы получите изображение в B.

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