我正在使用UITableView
和自定义UITableViewCell
。最初,当我从nib文件加载单元格的视图时,这性能很差。
我找到了Twitter for iPhone的作者的博客文章,讨论了为单元格绘制我们自己的图形以提高性能。这听起来很容易,对吗?
所以,我开始这样做了:
- (void)drawRect:(CGRect)rect{
// Drawing code
#define LEFT_COLUMN_WIDTH 48
#define MIDDLE_COLUMN_OFFSET 52
#define MIDDLE_COLUMN_WIDTH 180
#define MAIN_FONT_SIZE 12
#define MIN_MAIN_FONT_SIZE 10
#define SECONDARY_FONT_SIZE 10
#define MIN_SECONDARY_FONT_SIZE 10
#define RIGHT_COLUMN_SIZE 70
#define PADDING 4
UIColor * secondaryTextColor = nil;
UIFont * secondaryFont = [UIFont systemFontOfSize:SECONDARY_FONT_SIZE];
//mainTextColor = [UIColor blackColor];
secondaryTextColor = [UIColor blackColor];
self.backgroundColor = [UIColor whiteColor];
CGPoint point;
CGSize size;
//[mainTextColor set];
NSString * textToDisplay = @"Test";
CGPoint rightColumnStart = CGPointMake(self.frame.size.width - PADDING - RIGHT_COLUMN_SIZE, 0);
point = CGPointMake(rightColumnStart.x + (RIGHT_COLUMN_SIZE/2 - size.width/2), 40);
[textToDisplay drawAtPoint:point forWidth:RIGHT_COLUMN_SIZE withFont:secondaryFont minFontSize:MIN_SECONDARY_FONT_SIZE actualFontSize:NULL lineBreakMode:UILineBreakModeTailTruncation baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
// background color
/*CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextAddRect(context, CGRectMake(rightColumnStart.x, 0, RIGHT_COLUMN_SIZE, self.frame.size.height));
CGContextFillPath(context);
*/
}
正如你所看到的,有很多东西正在发生(以及相当数量的硬编码坐标,暂时忽略这些神奇的数字)。
因此,在代码块中,如果您查找注释“背景颜色”,可以看到我正在绘制一个彩色矩形。我也在同一个坐标空间内绘制文本“test”,我想在矩形顶部显示。
因此,如果我在没有启用“背景颜色”的情况下运行应用程序,则“测试”文本会显示没有问题。它是黑色,尺寸10,看起来很棒,定位正确等等。
当我绘制矩形时,“测试”文本不会显示。它很可能在彩色矩形后面渲染,或者没有正确设置混合。
如何避免此问题并将两者混合在一起,以便黑色文本显示在彩色矩形的顶部?我不确定我应该通过谷歌提出什么问题,所以如果这很简单,我会道歉。
感谢!!!!
答案 0 :(得分:2)
首先绘制背景,然后绘制文本。
答案 1 :(得分:0)
在绘制文本后,您似乎正在绘制背景颜色。如果您希望文本显示在它前面,则必须在它之前绘制它。