他の 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 を加味して描画する で記したようにして描画してあげる感じになるようです。

[ もどる ]