2012-02-05 26 views
1

我遇到了CoreText的「雞或雞蛋」問題。CTFramesetterSuggestFrameSizeWithConstraints包裝文本時

我需要知道CGSizeNSAttributedString將圍繞圖像纏繞。 我有一個UITableView在右上角顯示文本和圖像。 在我的模型上,我存儲了CTFrameSetterRef,即我的模型實體在加載時計算了所有 一次,然後將我的單元格cellForRowAtIndexPath中的CTFrameSetterRef傳遞給我。

我也預先計算用我的frameSetter和CTFramesetterSuggestFrameSizeWithConstraints 這是直線前進的單元格的高度,我現在已經有構造一個AttributedString渲染對象的數組,一個frameSetter與使其和高度,以便tableView在更新單元之前就知道這一點。

現在我想圍繞圖像右上角的文字。 當我想預先計算這些值時,會出現一些問題。

據我可以看出,我需要一個CTFrameSetter來計算大小 (使用CTFramesetterSuggestFrameSizeWithConstraints)。 這隻給我的大小,如果我的框架是矩形的 - 如果我想包裝文本,我需要創建一個路徑並設置它的大小 - 但這是在我知道大小之前! 然後,我需要將路徑添加到字典中,並使用字典構建CTFrameRef。

我的問題是我如何預先計算我的細胞的高度,如果我的屬性文本是圍繞圖像?

回答

0

您需要佈局一行一行:

  1. 佈局與寬度限​​制的第一行和使用CTFramesetterSuggestFrameSizeWithConstraints得到線高度和fitRange
  2. 佈局第一行下面的第二行,並具有適當的寬度限制 - 從前面行的高度和希望的間距開始,可以計算當前行的origin.y,用於確定此行是否將對照圖像跑,繼續在最後fitRange結束。
  3. 繼續...