我有UIView
透明背景和一些按钮。我想捕获视图的图形,缩小它,并在屏幕的其他地方重绘(镜像)它。 (在另一个视图的顶部。)按钮可以更改,因此它不是静态的。
最好的方法是什么?
答案 0 :(得分:4)
在WWDC会话后检查一个不错的示例代码http://saveme-dot-txt.blogspot.com/2011/06/dynamic-view-reflection-using.html。它使用
CAReplicatorLayer
用于反射,非常容易实现,看起来非常流畅和令人印象深刻。
答案 1 :(得分:2)
一般的想法是让UIView
layer
将自己绘制到一个上下文中,然后从中抓取UIImage
。
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
您还需要#import <QuartzCore/QuartzCore.h>
答案 2 :(得分:0)
如果您不需要捕获绘图(根据您描述的内容,您似乎不太可能需要图像),请创建另一个视图实例并应用转换。有点像...
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.
我添加了旋转只是为了表明你可以通过转换来做各种不同的事情。