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)
在 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)