Зеркальное отображение UIView
У меня есть UIView
с прозрачным фоном и несколькими кнопками. Я хотел бы захватить рисунок вида, сжать его и перерисовать (зеркально) его в другом месте на экране. (В дополнение к другому виду.) Кнопки могут меняться, поэтому они не являются статическими.
Какой был бы лучший способ сделать это?
Ответы
Ответ 1
Проверьте хороший пример кода http://saveme-dot-txt.blogspot.com/2011/06/dynamic-view-reflection-using.html после сеансов WWDC. Он использует
CAReplicatorLayer
для отражения, довольно легко реализуется и выглядит очень гладко и впечатляюще.
Ответ 2
Общая идея состоит в том, чтобы получить UIView
layer
, чтобы привлечь себя в контекст, а затем извлечь из него UIImage
.
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Вам также понадобится #import <QuartzCore/QuartzCore.h>
Ответ 3
Если вам не нужно захватывать чертеж (из того, что вы описываете, кажется маловероятным, что вам нужно изображение), создайте другой экземпляр представления и примените преобразование. Что-то вроде...
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.
Я добавил поворот, чтобы показать, что вы можете делать различные вещи с помощью преобразований.