从CGContextShowTextAtPoint转换后,drawAtPoint无法正常工作

时间:2013-12-09 04:39:40

标签: ios ios7 cgcontext core-text

由于CGContextShowTextAtPoint在iOS 7中已弃用,我想将CGContextShowTextAtPoint更改为drawAtPoint,但文本正在输出。

 //Add text to UIImage
    -(UIImage *)addText:(UIImage *)img text:(NSString *)text1{
        int w = 32;
        int h = 32;

        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
        CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);

        //char* text= (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
        CGContextSetTextDrawingMode(context, kCGTextFill);
        CGContextSetRGBFillColor(context, 0, 0, 0, 1);

    //    CGContextSelectFont(context, "Montserrat-Regular",12, kCGEncodingMacRoman);
    //    CGContextShowTextAtPoint(context,9,12,text, strlen(text));
    //
        [text1 drawAtPoint:CGPointMake(0, 0) withFont:[UIFont fontWithName:@"Montserrat-Regular" size:12]];

        CGImageRef imgCombined = CGBitmapContextCreateImage(context);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        UIImage *retImage = [UIImage imageWithCGImage:imgCombined];
        CGImageRelease(imgCombined);

        return retImage;
    }

1 个答案:

答案 0 :(得分:1)

确定它可以正常工作

//Add text to UIImage
-(UIImage *)addText:(UIImage *)img text:(NSString *)text1
{
    UIGraphicsBeginImageContext(CGSizeMake(36, 36));
    CGRect aRectangle = CGRectMake(0,0, 36.0f,36.0f);
    [img drawInRect:aRectangle];

    [text1 drawInRect : CGRectMake(0, 10, 36, 36)
             withFont : [UIFont fontWithName:@"Montserrat-Regular" size:12]
        lineBreakMode : NSLineBreakByTruncatingTail
            alignment : NSTextAlignmentCenter ];

    UIImage *theImage=UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;


}