2016-05-26 30 views
3

我在標籤中的屬性文本中遇到了問題,這需要在底部留出很多空間。當我使用不歸屬的人時,尺寸確定,但現在我總是有底部空間 - 在圖像上標記爲粉紅色。我嘗試在Reveal.app中更改高度約束(由iOS生成)的值,並且當我使它小於一點時,文本被截斷。標籤中的屬性文本的內在大小不正確

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

bottom space ilustration

您遇到這樣的問題:

,因爲我正在從HTML字符串屬性我需要歸因標籤?

UPDATE:

我使用以下函數來產生NSAttributedString從HTML字符串(字符串擴展名)。

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() 
    } 
} 

回答

1

我以前肯定有過這個。我發現,一旦你設置的文本標籤上你就必須使用

label.attributedText = foo; 
[label setNeedsLayout]; // this line normally isn't required 
[label layoutIfNeeded]; 

這應該調整標籤正確的大小來更新它。否則,我不完全確定您的自動佈局約束是如何設置的,但是您可以手動計算標籤的新高度並基於此設置高度約束。但這通常不是必需的。

最後,您可能在文本末尾有空白。如果你不想要,請務必將其移除。

+0

這是我第一次猜測。但沒有效果。我一直在努力: label.setNeedsUpdateConstraints() label.updateConstraintsIfNeeded() label.setNeedsLayout() label.layoutIfNeeded() self.view.setNeedsLayout() self.view.layoutIfNeeded() – Fishman

+0

和你肯定沒有尾隨空格? – Gordonium

+0

我沒有空格。高度約束是由自動佈局產生的,我沒有手動設置它。呈現的整個代碼是我發佈的html。 我的猜測是,從html字符串中產生屬性文本的函數可能會造成嚴重的後果。問題隨之更新。 – Fishman

1

我發現從HTML內容中刪除<p>標籤可修復尺寸。這使我認爲sizeToFit方法無法正確計算大小,因爲它必須處理從HTML創建的屬性字符串中的段落。

我知道這不是最好的解決方案,但也許你可以用<br>代替<p>標籤。這是迄今爲止我設法找到的唯一修復程序。

0

這是因爲<p>標籤固有地在最後添加了新的一行。一種方法可以使用<div style = display: inline>這種方式它不會添加新行

相關問題