当前位置:  开发笔记 > 编程语言 > 正文

如何在iPhone上使用Quartz显示文字?

如何解决《如何在iPhone上使用Quartz显示文字?》经验,为你挑选了2个好方法。

我一直在尝试使用Quartz上下文显示文本,但无论我尝试过什么,我都没有运气得到文本显示(我能够显示各种其他Quartz对象).谁知道我可能做错了什么?

例:

-(void)drawRect:(CGRect)rect
{   
  // Drawing code
  CGContextRef  context = UIGraphicsGetCurrentContext();
  CGContextSelectFont(context, "Arial", 24, kCGEncodingFontSpecific);
  CGContextSetTextPosition(context,80,80);
  CGContextShowText(context, "hello", 6);
  //not even this works
  CGContextShowTextAtPoint(context, 1,1, "hello", 6);
}    

Ash.. 9

好,我知道了.首先,将编码模式更改为kCGEncodingMacRoman.其次,在它下面插入这一行:

CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));

这将设置文本的转换矩阵,以便正确绘制.如果您不放入该行,您的文本将颠倒并返回到前面.不知道为什么这不是默认值.最后,确保您设置了正确的填充颜色.如果您忘记从背景颜色更改为文本颜色并最终使用白色白色文本,则很容易犯错误.



1> Ash..:

好,我知道了.首先,将编码模式更改为kCGEncodingMacRoman.其次,在它下面插入这一行:

CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));

这将设置文本的转换矩阵,以便正确绘制.如果您不放入该行,您的文本将颠倒并返回到前面.不知道为什么这不是默认值.最后,确保您设置了正确的填充颜色.如果您忘记从背景颜色更改为文本颜色并最终使用白色白色文本,则很容易犯错误.



2> Darron..:

这是我正在使用的代码片段.

UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);

和:

static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
                          int maxFontSize, int minFontSize) {
    CGPoint point = CGPointMake(left, y);
    UIFont *font = [UIFont systemFontOfSize:maxFontSize];
    [text drawAtPoint:point forWidth:right - left withFont:font
       minFontSize:minFontSize actualFontSize:NULL
       lineBreakMode:UILineBreakModeTailTruncation
       baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
}

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有