web-dev-qa-db-ja.com

UIImageを描画する方法、または-drawRect:で直接描画する方法

UIImageに描画したいUIViewがあります。しかし、UIImageViewを作成してこれをサブビューとして追加する代わりに、-drawRect:およびUIViewを直接描画します。

たとえば、私のコードは次のようになります。

- (void)drawRect:(CGRect)rect {
    CGContextRef myContext = UIGraphicsGetCurrentContext();

    UIImage *img = [UIImage imageNamed:@"foo.png"];

    // how to draw the directly into the view now?
}
46
HelloMoon

[img drawInRect:rect];

84
Ole Begemann

ところで、drawRectメソッドで画像ファイルをロードしないでください。これは、ビューの更新が必要になるたびにメソッドが呼び出されるためです。したがって、実行中に(もちろん、ロード手順)何回も呼び出される可能性があります。 (さらに、OS2.xのimageNamedメソッドにはバグがあります-画像をキャッシュせずにリークしました。)

したがって、drawRectではなく、初期化メソッドでファイルをロードすることをお勧めします。

30
KatokichiSoft