【发布时间】:2021-09-02 14:36:40
【问题描述】:
我有一个案例,我想在UILabel 中显示某种脚注文本。文本以数字为前缀作为对应的索引。
我解决这个问题的第一个想法是简单地创建一个带有UILabel 的视图设置,用于标记和文本。然而,这涉及到很多对约束和自动布局的摆弄,因为我想在一个表格中列出所有脚注。
因此我想出了使用NSMutableAttributedString 并分别为标记和文本设置基线/字体大小的想法。生成的NSAttributedString 然后可以在任何带有UILabel 的布局中使用。
let footnote: NSMutableAttributedString = .init(string: mark, attributes: [
.foregroundColor: UIColor.myColor,
.font: UIFont.myFont(7),
.baselineOffset: 10,
])
disclaimer.append(.init(string: text, attributes: [
.foregroundColor: UIColor.myColor,
.font: UIFont.myFont(14),
]))
或者我是这么认为的。似乎UILabel 或UITableViewRow 的布局不喜欢具有交替基线的文本,因为UILabel 从未调整为超过2 行。这两条线以外的一切都被切断了。即使设置preferredMayLayoutWidth 来帮助布局一点也不奏效。它确实将标签缩放到正确的高度,但文本仍然丢失,就好像它被截断了一样。
【问题讨论】: