Зеркальное отображение UIView

У меня есть UIView с прозрачным фоном и некоторыми кнопками. Я хотел бы захватить рисунок вида, уменьшить его и перерисовать (отразить) в другом месте экрана. (Поверх другого вида.) Кнопки могут меняться, поэтому они не статичны.

Каков был бы лучший способ сделать это?

3 ответа

Проверьте хороший пример кода http://saveme-dot-txt.blogspot.com/2011/06/dynamic-view-reflection-using.html после сеансов WWDC. Оно использует

CAReplicatorLayer

для размышления, довольно легко реализовать и выглядит действительно гладко и впечатляюще.

Общая идея будет заключаться в том, чтобы получить UIView"s layer нарисовать себя в контексте, а затем захватить UIImage из этого.

UIGraphicsBeginImageContext(view.frame.size);

[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

Вам также нужно будет #import <QuartzCore/QuartzCore.h>

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

UIView* original [UIView alloc] initWithFrame:originalFrame];
UIView* copy = [[UIView alloc] initWithFrame:copyFrame];

// Scale down 50% and rotate 45 degrees
//
CGAffineTransform t = CGAffineTransformMakeScale(0.5, 0.5);
copy.transform = CGAffineTransformRotate(t, M_PI_4);

[someSuperView addSubview:original];
[someSuperView addSubview:copy];

// release, etc.

Я добавил вращение, чтобы показать, что вы можете делать различные вещи с преобразованиями.

Другие вопросы по тегам