Iphone 如何在UIImage中编写具有特殊字符的文本?
我想在UIImage中写一些文字,我发现这是可行的,但是如果你试图写一些特殊的字符,比如“á,é,í,ö,ô…”,那么它就失败了 守则:Iphone 如何在UIImage中编写具有特殊字符的文本?,iphone,ios,text,uiimage,core-graphics,Iphone,Ios,Text,Uiimage,Core Graphics,我想在UIImage中写一些文字,我发现这是可行的,但是如果你试图写一些特殊的字符,比如“á,é,í,ö,ô…”,那么它就失败了 守则: //Add text to UIImage -(UIImage *)addText:(UIImage *)img text:(NSString *)text1{ int w = img.size.width; int h = img.size.height; //lon = h - lon; CGColorSpaceRef c
//Add text to UIImage
-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{
int w = img.size.width;
int h = img.size.height;
//lon = h - lon;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);
char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];// "05/05/09";
CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 255, 255, 255, 1);
//rotate text
CGContextSetTextMatrix(context, CGAffineTransformMakeRotation( -M_PI/4 ));
CGContextShowTextAtPoint(context, 4, 52, text, strlen(text));
CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return [UIImage imageWithCGImage:imageMasked];
}
有什么办法解决这个问题吗
多谢各位
编辑:
我试图改变:
char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
到
但它不起作用。尝试使用NSUTF8StringEncoding而不是NSASCIIStringEncoding尝试使用NSUTF8StringEncoding而不是NSASCIIStringEncoding另一位用户告诉我如何操作:
-(UIImage *)writeText:(NSString *)text1 toImage:(UIImage *)img{
CGSize sizeText = [text1 sizeWithFont:[UIFont fontWithName:@"Helvetica" size:36] minFontSize:36 actualFontSize:nil forWidth:783 lineBreakMode:UILineBreakModeTailTruncation];
CGFloat posX = 1024.0 - 230.0 - sizeText.width;
UIGraphicsBeginImageContextWithOptions(img.size, NO, 0.0f);
[img drawAtPoint:CGPointMake(0.0f, 0.0f)];
[text1 drawAtPoint:CGPointMake(posX, 588.0) withFont:[UIFont fontWithName:@"Helvetica" size:36]];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}
在此中,另一位用户告诉我如何操作:
-(UIImage *)writeText:(NSString *)text1 toImage:(UIImage *)img{
CGSize sizeText = [text1 sizeWithFont:[UIFont fontWithName:@"Helvetica" size:36] minFontSize:36 actualFontSize:nil forWidth:783 lineBreakMode:UILineBreakModeTailTruncation];
CGFloat posX = 1024.0 - 230.0 - sizeText.width;
UIGraphicsBeginImageContextWithOptions(img.size, NO, 0.0f);
[img drawAtPoint:CGPointMake(0.0f, 0.0f)];
[text1 drawAtPoint:CGPointMake(posX, 588.0) withFont:[UIFont fontWithName:@"Helvetica" size:36]];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}
在此中,我已经尝试过了,但这不是问题所在,我认为问题在于:CGContextSelectFont(context,“Arial”,18,kCGEncodingMacRoman);但我不知道如何解决它。我以前已经尝试过了,但它不是问题,我认为问题在于:CGContextSelectFont(context,“Arial”,18,kCGEncodingMacRoman);但我不知道怎么解决它。