【发布时间】:2013-07-08 21:05:11
【问题描述】:
我想制作一些带有标签的 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;
但它只绘制第一行,就像屏幕截图一样。
我哪里错了?
谢谢。
【问题讨论】:
-
注销 textSize 至少会告诉您问题出在
sizeWithFont:constrainedToSize:lineBreakMode:返回的大小还是实际绘图。 -
为什么不添加标签并在图像可用时将其删除?还是活动指标?
-
使用 UILabel 显示您的消息要容易得多。隐藏 UIImageView(将其 hidden 属性设置为 YES)并显示 UILabel(将 hidden 设置为 NO)。
-
制作这个UIImage对我来说更容易,因为图像显示在很多地方:我需要在所有地方放置标签或活动指示器,或者只是制作一个简单的UIImage。无论如何,我认为,它应该工作。
-
您说得对,它应该可以工作(如果您使用正确的方法,它确实可以工作——请参阅我的回答)。而且不管是不是最好的解决方案,想要画一个字符串是完全合理的;这正是 NSString 提供绘图方法的原因。