我使用這些功能在圖像上繪製文本:的iOS:CGContext上SetTextDrawingMode不同的字符會導致崩潰/沒有文本繪製
char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
CGContextSelectFont(context, "Helvetica", fontSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 0.0, 0.1, 0.1, 1);
CGContextShowTextAtPoint(context, 5, 20, text, strlen(text));
它正常工作,除非我有字符,如「U」,「 ö「,」ä「等與strlen等 - 它會導致崩潰。所以我試圖在此行之前使用此字符串來獲取字符串的長度
char* text = (char *)[text cStringUsingEncoding:NSASCIIStringEncoding];
by doing this:
int length = [text length];
and then replace strlen(text) with length.
它不會導致崩潰,但不會繪製文本。我認爲這裏的罪魁禍首是人物。 我試過
kCGEncodingMacRoman
kCGEncodingFontSpecific
但沒有什麼幫助。你能和我一起嗎?謝謝。
更新: @馬丁R:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, 90.0f, 90.0f, 8, 4 * 90.0f, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, 90.0f, 90.0f), img.CGImage);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 0.8, 0.1, 0.1, 1);
[text1 drawAtPoint:(CGPoint){5, 20} withFont:[UIFont fontWithName:@"Helvetica" size:10.0f]];
CGImageRef finalImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIImage *image = [UIImage imageWithCGImage:finalImage];
CGImageRelease(finalImage);
return image;
我認爲它是一個錯字或複製/粘貼錯誤,您在'char * text =(char *)[text ...]'兩側使用'text'? –