Ios4 在图像上写入多行

Ios4 在图像上写入多行,ios4,uiimage,Ios4,Uiimage,text1是一个很长的字符串,因此我需要多行支持。 我该怎么办 int w = img.size.width; int h = img.size.height; CGColorSpaceRef colorSpace= CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4*w, colorSpace, kCGImageAlphaPr

text1
是一个很长的字符串,因此我需要多行支持。 我该怎么办

    int w = img.size.width;
    int h = img.size.height;

    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];
    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context, kCGTextFill);
    CGContextSetRGBFillColor(context, 255,255,255,1);

    //CGContextSetTextMatrix(context, CGAffineTransformMakeRotation(-M_PI/4));;
    CGContextShowTextAtPoint(context, w/3 + 10, 5, text, strlen(text));
    CGImageRef imageMasked = CGBitmapContextCreateImage(context);
    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);
    return [UIImage imageWithCGImage:imageMasked];

我假设您希望支持多行

然后您可以始终使用此选项:

 CGSize size = [text sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0]
                   constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:UILineBreakModeWordWrap];
指定宽度和高度(在
:CGSizeMake(240.0480.0)
中)、字体类型和大小,然后为
文本1.frame
指定此大小


您将根据字符串获得大小,文本将在其中进行调整。

如果您不介意使用UIKit方法而不是CGContext方法来绘制文本,您可以使用来绘制文本,这将为您处理换行操作。请注意,您可以使用和从现有的CGGraphicsRef转到UIKit上下文,如果您的目标是早于4.0的iOS,则必须在主线程上绘制UIKit。

如果您误解了这个问题,我很抱歉,但我在图像上编写此文本1,希望它支持多行。所以我不能设置text1的框架,因为它不是用户界面对象。你还有别的选择吗?不要放弃。我加了一笔赏金。也许现在有人能回答这个问题了。:)我没有给它贴标签。其他人编辑了我的帖子drawInRect我可以在背景中添加颜色,我想将图像设置为背景。我试过了,但它在我的半幅图像中显示了黑色背景。有什么帮助吗?@SmritiYadav:NSString方法(由UIKit添加)
drawInRect:withFont:lineBreakMode:
不绘制任何背景,只绘制文本。我在上下文中使用它。我无法在代码中正确实现这一点。我想在我的图像上写一些文字。但它会返回CGSize,我不会在参数中传递文本!你能不能给我提供一些代码,告诉我如何使用这个方法,这将是非常有帮助的。使用非常类似的
drawInRect:withFont:
方法。即使在本例中,他们也将\n用于下一行。如果我们输入一个长字符串而没有\n,我的一些文本将被剪切,而不是转到下一行。感谢@Anomie为您抽出时间。:)