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

Posted

技术标签:

【中文标题】iOS 15 对 NSAttributedString 的图像附件行为不同。如何固定标签的高度?【英文标题】:iOS 15 image attachment behaviour to NSAttributedString is different. How can I fix the height of the label? 【发布时间】:2022-01-18 22:11:00 【问题描述】:

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)

【问题讨论】:

【参考方案1】:

我的项目有类似的问题,在 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: imageString.length)

text.append(imageString)

【讨论】:

在附件字符串中添加字体属性可以解决问题,谢谢!

以上是关于iOS 15 对 NSAttributedString 的图像附件行为不同。如何固定标签的高度?的主要内容,如果未能解决你的问题,请参考以下文章

iOS之深入解析Xcode 13(iOS 15)正式版发布的新特性

iOS 15 WebShare 支持的文件类型

产品资讯 | mPaaS 10.1.68 适配 iOS 15

常用知识之iOS15代码功能属性新适配

划重点|iOS15正式发布, 全新的通知推送系统,你必须要知道!

通信通知 Communication Notifications 的实现 (iOS 15+)