iOS Swift 将文字环绕图像

iOS Swift Wrapping Text Around Image

我有一个 UILabel,它将包含各种长度的文本。我需要在文本的左上角放置一个图像,并让文本环绕它。我怎样才能做到这一点?我所能找到的只是使用 UITextView,我不想使用它,因为它是静态文本。

您可以使用 NSTextAttachment 和属性文本实现此目的。

NSMutableAttributedString *myText = [[NSMutableAttributedString alloc] initWithString:labelStr];

NSTextAttachment *attachment = [[NSTextAttachment alloc] init]
attachment.image = yourImage;
NSAttributedString *attachmentLock = [NSAttributedString attributedStringWithAttachment:attachment];
NSMutableAttributedString *lockString = [[NSMutableAttributedString alloc] initWithAttributedString:myText];

//set your image range within the text. modify it till you get it right.
NSRange range = NSMakeRange(0,[labelStr length]);
[lockString replaceCharactersInRange:NSMakeRange(range.location, 1) withAttributedString:attachmentLock];
yourLabel.attributedText = lockString;

这是对 UITextView 的一种完全合理的使用。您对使用它犹豫不决的原因尚不清楚。您可以使 UITextView 不可编辑且不可选择;用户不会知道它是 UITextView 而不是 UILabel。

如果您不喜欢该解决方案,那么我要做的是使用绘制文本的自定义视图来代替 UILabel。您可以使用 Text Kit 绘制文本,因此您可以完全掌控文本的绘制方式。特别是,您可以根据需要使它换行,包括不在角落绘制文本(文本容器上的排除路径)。