私はUIView
に透明な背景といくつかのボタンがあります。私は、ビューの描画をキャプチャし、縮小し、画面上の別の場所に再描画(ミラー)したいと思います。 (別のビューの上に)ボタンが変化する可能性があるので、静的ではありません。ミラーリングUIView
これを行うにはどうすればよいでしょうか?
私はUIView
に透明な背景といくつかのボタンがあります。私は、ビューの描画をキャプチャし、縮小し、画面上の別の場所に再描画(ミラー)したいと思います。 (別のビューの上に)ボタンが変化する可能性があるので、静的ではありません。ミラーリングUIView
これを行うにはどうすればよいでしょうか?
一般的な考え方はUIView
の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.
私は、あなたが変換でさまざまなことをすることができることを示すために回転を追加しました。
WWDCセッションに続いて、素敵なサンプルコードhttp://saveme-dot-txt.blogspot.com/2011/06/dynamic-view-reflection-using.htmlを確認してください。それは反射のために、かなり簡単に実装して、本当に滑らかで印象的に見えるために
CAReplicatorLayer
を使用します。
だから私はUIImageを拡大して、どこに描いていきたいですか?それは透明性を保つだろうか?ありがとう。 –
はいとはい、透明性を保持する必要があります。 –
UIImageならオーバーヘッドなしで 'CGContext'を直接使うことはできますか? –