我在标签中的属性文本有问题,底部占用了大量空间。当我使用不归因于一个时,尺寸确定没问题,但现在我总是底部空间 - 图像上标记为粉红色。我尝试在Reveal.app中更改高度约束的值(由iOS生成),当我使它比它小一点时,文本被截断。
我需要属性标签,因为我从HTML字符串中创建属性:
<p style=\"font-family: EncodeSans-Thin; font-size: 10.0; color: #1f2e3b;\">
Od 2004 roku wspieramy organizacje biznesowe w rozwoju sztuki zarządzania projektami.
Nasza działalność opiera się na trzech filarach –
<span style=\"font-family: EncodeSans-Light\">
doradztwie, realizacji projektów na zlecenie oraz szkoleniach.
</span>
</p>
你遇到过这样的问题吗?
更新
我使用下面的函数从HTML字符串生成NSAttributedString(作为String扩展名)。
func makeAttributesFromHTML() -> NSAttributedString {
guard let htmlData = self.dataUsingEncoding(NSUTF8StringEncoding) else {
return NSAttributedString()
}
do {
let atributedString = try NSAttributedString(data: htmlData, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding], documentAttributes: nil)
return atributedString
} catch {
return NSAttributedString()
}
}
答案 0 :(得分:1)
我以前肯定有这个。我发现一旦你在标签上设置了文本,你就必须使用
更新它label.attributedText = foo;
[label setNeedsLayout]; // this line normally isn't required
[label layoutIfNeeded];
这应该将标签大小调整到正确的大小。如果做不到这一点,我不完全确定你的自动布局约束是如何设置的,但你可以手动计算标签的新高度并根据它设置高度约束。但这通常不是必需的。
最后,您可能在文本末尾有空格。如果您不想要,请务必将其删除。
答案 1 :(得分:1)
我发现从<p>
内容中删除HTML
代码会修复尺寸。这让我觉得sizeToFit
方法在必须处理从HTML
创建的属性字符串中的段落时,无法正确计算大小。
我知道这不是最好的解决方案,但也许您可以用<p>
替换<br>
代码。这是我到目前为止找到的唯一解决办法。
答案 2 :(得分:0)
这是因为<p>
标签最终会在最后添加新行。一种方法是使用<div style = display: inline>
这种方式不会添加新行