Зеркальное отображение 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.
Я добавил вращение, чтобы показать, что вы можете делать различные вещи с преобразованиями.