加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – CGContext文本绘图不会在iPhone 4上扩展

发布时间:2020-12-16 06:02:36 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个在iPhone 4上很好地扩展的应用程序.目前,它大部分的扩展完美,除了一个关键的部分:我在一个CALayer中绘制的文本,它的drawInContext:方法.这是我的代码: - (void)drawInContext:(CGContextRef)context { UIGraphicsPushContext(context);
我正在尝试创建一个在iPhone 4上很好地扩展的应用程序.目前,它大部分的扩展完美,除了一个关键的部分:我在一个CALayer中绘制的文本,它的drawInContext:方法.这是我的代码:
- (void)drawInContext:(CGContextRef)context {
    UIGraphicsPushContext(context);

    CGContextSetGrayFillColor(context,1.0f,1.0f);
    CGContextFillRect(context,self.bounds);

    CGContextSetAllowsAntialiasing(context,true);
    CGContextSetShouldAntialias(context,true);

    CGContextSetAllowsFontSmoothing(context,true);
    CGContextSetShouldSmoothFonts(context,true);

    CGContextSetAllowsFontSubpixelQuantization(context,true);
    CGContextSetShouldSubpixelQuantizeFonts(context,true);

    CGContextTranslateCTM(context,0.0f,self.frame.size.height);
    CGContextScaleCTM(context,-1.0f);

    CGContextSetFillColorWithColor(context,[[UIColor blackColor] CGColor]);
    CGContextSelectFont(context,"CardKit",30.0f,kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context,kCGTextFill);
    CGContextShowText(context,"A",sizeof("A"));

    UIGraphicsPopContext();
}

这两个设备上的短暂文本都会产生清晰的文字,但不幸的是,它们在两者上都会产生模糊的文字.这是怎么出现的:

ugly text http://files.droplr.com.s3.amazonaws.com/files/16285043/1gBp61.Screen%20shot%202010-06-26%20at%2021:25:09.png

该图像是在iPhone 4上100%放大拍摄的.世界上有哪些?任何想法如何解决这个问题?

解决方法

您应该将图层的contentsScale设置为与屏幕的比例相同:
layer.contentsScale = [UIScreen mainScreen].scale;

这将在所有iOS设备,Retina显示屏和非视网膜显示屏上正确扩展.你不应该将它硬编码到2.0(或者其他任何事情),除非你有很好的理由这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读