Ios NSString drawAtPoint带

Ios NSString drawAtPoint带,ios,uiimage,Ios,Uiimage,我想做一些带标签的UIImage,如果照片没有加载,它会显示出来。 在应用程序中生成此图像更有用,因为它非常容易将文本本地化。 我有密码: NSString *text = @"Photo not loaded yet. Please wait."; UIFont *font = [UIFont boldSystemFontOfSize:35]; CGSize imageSize = CGSizeMake(400, 400); CGSize constraint = CGSizeMake(im

我想做一些带标签的UIImage,如果照片没有加载,它会显示出来。 在应用程序中生成此图像更有用,因为它非常容易将文本本地化。 我有密码:

NSString *text = @"Photo not loaded yet. Please wait.";
UIFont *font = [UIFont boldSystemFontOfSize:35];
CGSize imageSize = CGSizeMake(400, 400);

CGSize constraint = CGSizeMake(imageSize.width * 0.8f, imageSize.height * 0.8f);
CGSize textSize = [text sizeWithFont:font constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];

UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);

CGPoint pointToDraw = CGPointMake((imageSize.width - textSize.width) / 2, (imageSize.height - textSize.height) / 2);

[text drawAtPoint:pointToDraw forWidth:textSize.width withFont:font lineBreakMode:NSLineBreakByWordWrapping];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return image;
但它只画了第一行,就像截图一样

我哪里错了

谢谢。

来自for
-绘图点:for宽度:with字体:

使用指定的字体和属性在当前图形上下文中的指定点以单行形式绘制字符串


因此,使用不同的方法
-drawInRect:withFont:lineBreakMode:
看起来像是一个可靠的候选者。

注销textSize至少会告诉您问题是从
sizeWithFont:constrainedToSize:lineBreakMode:
返回的大小还是实际的图形。为什么不在图像可用时添加标签并删除它呢?还是活动指示器?使用UILabel显示消息要容易得多。隐藏UIImageView(将其hidden属性设置为YES)并显示UILabel(将hidden设置为NO)。制作此UIImage对我来说更容易,因为图像显示在很多地方:我需要在所有地方放置标签或活动指示器,或者只制作一个简单的UIImage。不管怎样,我认为,它应该是有效的。你是对的,它应该是有效的(如果你使用正确的方法,它确实有效——请看我的答案)。不管这是不是最好的解决方案,想要画一条线是完全合理的;这正是NSString提供绘图方法的原因。谢谢。这是我的错!