2011-08-23 48 views
0

我想在UIImage中寫一些文字,我發現這個link它可以工作,但是如果你嘗試寫一些特殊字符如「á,é,í,ö,ô...」那麼它就會失敗。如何在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 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]; 

char* text = (char *)[text1 cStringUsingEncoding:NSUTF8StringEncoding]; 

,但它不工作。

回答

2

NSUTF8StringEncoding另一位用戶告訴我該怎麼做:

-(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; 
} 

在這種link

1

嘗試使用,而不是NSASCIIStringEncoding

+0

已經我已經嘗試過,但它是沒有問題的,我雖然問題是:CGContextSelectFont(上下文,「Arial」,18,kCGEncodingMacRoman);但我不知道如何解決它。 – torhector2

+0

您是否找到任何解決方案? – Satyam

+0

是的,接受的職位是解決方案。 – torhector2

相關問題