ios7 – iOS 7中的CGContextSelectFont和CGContextShowTextAtPoint

前端之家收集整理的这篇文章主要介绍了ios7 – iOS 7中的CGContextSelectFont和CGContextShowTextAtPoint前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在iOS 7中不推荐使用CGContextSelectFont和CGContextShowTextAtPoint.C中的等价物是什么?

我见过的所有答案都给出了Objective-C等价物(比如使用NSString方法),但我正在使用C文件.

解决方法

这是解决方案.这些函数已被弃用,以支持Core Text.它更先进,但需要一段时间来弄明白.这个样本绘制了“Hello World!”使用Courier字体.
- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);

    CFStringRef font_name = CFStringCreateWithCString(NULL,"Courier",kcfStringEncodingMacRoman);

    CTFontRef font = CTFontCreateWithName(font_name,36.0,NULL);

    CFStringRef keys[] = { kCTFontAttributeName };

    CFTypeRef values[] = { font };

    CFDictionaryRef font_attributes = CFDictionaryCreate(kcfAllocatorDefault,(const void **)&keys,(const void **)&values,sizeof(keys) / sizeof(keys[0]),&kcfTypeDictionaryKeyCallBacks,&kcfTypeDictionaryValueCallBacks);

    CFRelease(font_name);

    CFRelease(font);

    int x = 10;
    int y = 10;
    const char *text = "Hello World!";

    CFStringRef string = CFStringCreateWithCString(NULL,text,kcfStringEncodingMacRoman);

    CFAttributedStringRef attr_string = CFAttributedStringCreate(NULL,string,font_attributes);

    CTLineRef line = CTLineCreateWithAttributedString(attr_string);

    CGContextSetTextPosition(context,x,y);

    // Core Text uses a reference coordinate system with the origin on the bottom-left
    // flip the coordinate system before drawing or the text will appear upside down
    CGContextTranslateCTM(context,self.bounds.size.height);
    CGContextScaleCTM(context,1.0,-1.0);

    CTLineDraw(line,context);

    CFRelease(line);

    CFRelease(string);

    CFRelease(attr_string);

    CGContextRestoreGState(context);
}
原文链接:https://www.f2er.com/iOS/328347.html

猜你在找的iOS相关文章