画像とテキストを表示するカスタム UITableViewCell サブクラスがあります。画像はダウンロードされますが、テーブル ビュー セルが表示された時点でテキストをすぐに利用できます。
さまざまな場所から、複数のサブビュー (この場合は UIImageView ビューと 2 つの UILabel ビュー) を使用するよりも、ビューを 1 つだけ使用してビューの drawRect メソッドに描画する方がパフォーマンスを向上させる方がよいと読みました。
カスタム テーブル ビューのセルに画像を描画したくないdrawRect
ので、
- 画像はおそらく最初に呼び出されたときに利用できないでしょう。
- 誰かが drawRect を呼び出すたびに画像全体を描画したくありません。
ビュー内の画像は、誰かが画像の表示を要求した場合にのみ実行する必要があります (たとえば、ネットワーク操作が完了し、画像をレンダリングできる場合)。ただし、テキストは -drawRect
メソッドで描画されます。
問題点:
ダウンロードした画像を画面に表示できません。私が現在使用しているコードは-
- (void)drawImageInView { //.. completion block after downloading from network if (image) { // Image downloaded from the network UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor); CGContextSetLineWidth(context, 1.0); CGContextSetTextDrawingMode(context, kCGTextFill); CGPoint posOnScreen = self.center; CGContextDrawImage(context, CGRectMake(posOnScreen.x - image.size.width/2, posOnScreen.y - image.size.height/2, image.size.width, image.size.height), image .CGImage); UIGraphicsEndImageContext(); } }
私も試しました:
UIGraphicsBeginImageContext(rect.size);
[image drawInRect:rect];
UIGraphicsEndImageContext();
無駄に。
- レンダリング時にテキストが画像の上に描画されるようにするにはどうすればよいですか。テキストが画像の上にレンダリングされることを確認するには、後で呼び出すだけで十分です
[self setNeedsDisplay]
か?UIGraphicsEndImageContext();