gpt4 book ai didi

iphone - Core Graphics 绘制形状和文本混合

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:05 25 4
gpt4 key购买 nike

我正在使用 UITableView 和自定义 UITableViewCell。最初,当我从 nib 文件加载单元格的 View 时,它的性能很差。

我找到了 iPhone 版 Twitter 作者的一篇博文,其中讨论了为单元格绘制我们自己的图形以提高性能。这听起来很简单,对吧?

所以,我在这里开始这样做:

- (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);
*/
}

如您所见,发生了很多事情(还有相当多的硬编码坐标,暂时忽略魔数(Magic Number))。

因此,在代码块中,如果您查找注释“背景颜色”,可以看到我正在绘制一个彩色矩形。我还在要显示在矩形顶部的同一坐标空间内绘制文本“test”。

因此,如果我在没有启用“背景颜色”的情况下运行应用程序,“测试”文本会毫无问题地显示出来。它是黑色的,10 号,看起来很棒,位置正确等等。

当我绘制矩形时,“测试”文本没有显示。它很可能在彩色矩形后面呈现,或者混合设置不正确。

如何避免此问题并将两者混合在一起,以便黑色文本显示在彩色矩形的顶部?我不确定我应该通过 Google 询问什么问题,所以如果这很简单,我深表歉意。

谢谢!!!!

最佳答案

先画背景,再画上面的文字。

关于iphone - Core Graphics 绘制形状和文本混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com