他の UIView の内容を自分自身に描画する : Objective-C プログラミング
PROGRAM
他の UIView の内容を自分自身に描画する
Objective-C では、他の UIView の描画内容を、自分自身に簡単に描画することが可能です。
例えば aView という UIView があったとして、それを自分自身に描画するには、次のように実装します。
// CALayer を使用するために QuartzCore/QuartzCore.h を組み込む必要があるようです。
#import <QuartzCore/QuartzCore.h>
// たとえば UIView の drawRect で、他の UIView の内容を自身に描画します。
- (void)drawRect:(CGRect)rect
{
// 現在のコンテキストを取得します。
CGContextRef context = UIGraphicsGetCurrentContext();
// 取得したコンテキストに、他の UIView の内容を書き出します。
[aView.layer drawInContext:context];
}
これだけで、他の UIView の描画内容を、自分自身の描画領域へ、書き出すことができました。
今回の例であれば必要に応じて、"drawInContext:" メソッドを呼び出した後に "[super drawRect:rect]" を実行すれば、他の UIView の描画を終えた後に、本来の自分の UIView の描画を進めることも可能です。
ただし、この方法だと表示開始位置は左上 (0, 0) からになる様子でした。
UIView に設定されている frame の origin も加味して描画したい場合には、他の UIView の内容を frame.origin を加味して描画する で記したようにして描画してあげる感じになるようです。
[ もどる ]