2011-12-30 7 views
1

私はUIViewに透明な背景といくつかのボタンがあります。私は、ビューの描画をキャプチャし、縮小し、画面上の別の場所に再描画(ミラー)したいと思います。 (別のビューの上に)ボタンが変化する可能性があるので、静的ではありません。ミラーリングUIView

これを行うにはどうすればよいでしょうか?

答えて

2

一般的な考え方はUIViewlayerをコンテキストに描画してからUIImageを取得することです。

UIGraphicsBeginImageContext(view.frame.size); 

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

UIGraphicsEndImageContext(); 

あなたが本当にの別のインスタンスを作成し、(あなたが記述するものから、あなたが画像を必要とするとは考えにくい)描画をキャプチャする必要がない場合はまた#import <QuartzCore/QuartzCore.h>

+0

だから私はUIImageを拡大して、どこに描いていきたいですか?それは透明性を保つだろうか?ありがとう。 –

+0

はいとはい、透明性を保持する必要があります。 –

+0

UIImageならオーバーヘッドなしで 'CGContext'を直接使うことはできますか? –

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. 

私は、あなたが変換でさまざまなことをすることができることを示すために回転を追加しました。

+0

そして、元のUIViewの内容を小さなものにどのように描画しますか? –

+0

同じクラスのインスタンスであれば、一度スーパービューに追加されたものを描画しないでしょうか? – nloko

+0

明確にするために更新された回答。 – nloko

関連する問題