我有一个自定义 UITableViewCell 子类,它显示图像和文本。在显示表格视图单元格时,当文本随时可用时下载图像。
从不同的地方,我读到最好只有一个视图并在视图的 drawRect 方法中绘制东西,以提高性能,而不是有多个子视图(在这种情况下是一个 UIImageView 视图和 2 个 UILabel 视图)
我不想在自定义表格视图单元格中绘制图像,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]
afterUIGraphicsEndImageContext();
足以确保文本呈现在图像之上?