镜像UIView

时间:2011-12-30 03:25:23

标签: ios uiview uikit core-graphics calayer

我有UIView透明背景和一些按钮。我想捕获视图的图形,缩小它,并在屏幕的其他地方重绘(镜像)它。 (在另一个视图的顶部。)按钮可以更改,因此它不是静态的。

最好的方法是什么?

3 个答案:

答案 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.

我添加了旋转只是为了表明你可以通过转换来做各种不同的事情。