iOS 15 NSAttributedString 的图像附件行为不同。如何固定标签的高度?

iOS 15 image attachment behaviour to NSAttributedString is different. How can I fix the height of the label?

在 iOS 14 上,当将图像附加到 NSAttributedString 时,标签的结果高度是正确的,但是在 iOS 15 上,它太高了。

iOS 14:

iOS 15:

代码:

view.backgroundColor = .black


label.layer.borderColor = UIColor.red.cgColor

label.layer.borderWidth = 1


let font = UIFont.systemFont(ofSize: 11, weight: .bold)

let text = NSMutableAttributedString(string: "LIVE", attributes: [.foregroundColor: UIColor.systemGreen, .font: font])


let attachment = NSTextAttachment()

attachment.image = UIImage(named: "live_indicator_image")!

let imageString = NSMutableAttributedString(attachment: attachment)

text.append(imageString)


label.attributedText = text

图片:

Xcode 版本: 13.1

模拟器: iPhone 13 (15.0), iPhone 12 (14.4)

我的项目有类似的问题,在 iOS14 或以前的项目上显示良好,但在 iOS15 上显示错误。 为了解决这个问题,我在使用 NSTextAttachment 制作的 NSMutableAttributedString 中添加了字体属性,然后添加到最终文本,如下所示。 请尝试。

let attachment = NSTextAttachment()

attachment.image = UIImage(named: "live_indicator_image")!

let imageString = NSMutableAttributedString(attachment: attachment)

imageString.addAttribute(.font, value: font, range: NSRange(location: 0, length:imageString.length))

text.append(imageString)