2012-03-26 55 views
2

我在CoreText中注意到,在開發我自己的自定義UITextView並查看Apple的SimpleTextInput時,如果空間不足(或移動到下一行),當它在行尾的空間不足時它的。相反,它繼續繪製在視圖寬度範圍之後的同一行上。CoreText - 空間不包裹?

這是一個錯誤,還是這是預期的行爲?無論如何,請使用CoreText來獲得空間來包裝/闖入下一行嗎?

更新:嘗試單獨設置空間具有kCTLineBreakByCharWrapping屬性,它不起作用。想想也許有一些unicode角色可以輸入,而不是@" ",這可能會使它正常工作?試圖避免現在手動將其放入代碼中。

回答

4

我用-代替「」,比之前我畫的文字我應該把- 被清理成空白的地方。所以你可以在空白處做一些你喜歡的事情,我在這些地方畫一些emoji,它適用於我。你可以試試~ ^.^

7

在設計上,單獨的空白不會觸發換行符。只有穿過邊距的可見字符纔會觸發換行符。

您可以使用CTLineGetTrailingWhitespaceWidthCTLine的末尾找到空白的寬度。

通過附加CTRunDelegate屬性,可以使空白字符可能導致換行符(如果它跨越邊距)。您將不得不使CTRunDelegate報告適當的寬度,上升和下降,您可能需要查看CTFont。對於設置爲相同字體和大小的所有空格,您可以使用單個實例CTRunDelegate

+0

謝謝。其實我模仿了UITextView的行爲。在這種情況下,如果你在一行的最後做一個空格,那麼這個空格就會被追加,但光標只是停留在它的位置上。 – 2012-03-28 05:22:48

+0

如果CTRunDelegate附加到空格,它實際上*不會*幫助。這也適用於普通的nobr空間。 – Nuoji 2016-06-05 23:51:10