iPhone - 使用CGContext在黑色视图上绘制白色文本

时间:2011-08-30 23:52:37

标签: iphone cocoa-touch text colors core-graphics

我无法在drawRect方法中使用CGContext在黑色视图上绘制一些白色文本。

我做:

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(context, 1.0);
CGContextSelectFont(context, "Helvetica", 20, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);

CGPoint center = self.center;

然后......
无法找到正确的方法。
我试过这个:

UIFont* font = [UIFont fontWithName:@"Geneva" size:12.0];
[@"Some text" drawAtPoint:center withFont:font];

但它不起作用。

我没有找到任何CGContext方法。隐藏在哪里?

我如何以白色绘制该文字?

5 个答案:

答案 0 :(得分:4)

好几个小时后阅读Quartz 2D编程指南我发现你还必须设置FILL颜色,而不仅仅是STROKE颜色。所以以下代码有效。

CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);

我需要在darkGray边框上显示图表标签。现在标签显示为白色。

答案 1 :(得分:2)

这将在黑色矩形中以白色绘制一个字符串

NSString *text = @"Some text";
CGPoint center = CGPointMake(100, 200);
UIFont *font = [UIFont systemFontOfSize:14];

CGSize stringSize = [text sizeWithFont:font];
CGRect stringRect = CGRectMake(center.x-stringSize.width/2, center.y-stringSize.height/2, stringSize.width, stringSize.height);

[[UIColor blackColor] set];
CGContextFillRect(context, stringRect);

[[UIColor whiteColor] set];
[text drawInRect:stringRect withFont:font];

答案 2 :(得分:1)

在较短的示例中,请尝试在[[UIColor whiteColor] set]来电之前使用drawAtPoint:

答案 3 :(得分:0)

适用于:

CGContextShowTextAtPoint (context, center.x, center.y, "Some text", strlen("Some text")); 

但仍需要显示一些未镜像的转换: - )

答案 4 :(得分:0)

这将适用于此代码:

NSString *text = @"Some text";
UIFont *font = [UIFont systemFontOfSize:14];

[ text drawAtPoint:CGPointMake( 0, 0 ) withAttributes:@{ NSFontAttributeName:font, NSForegroundColorAttributeName : UIColor.redColor } ];