CoreText - 没有包装的空间?

时间:2012-03-26 16:49:16

标签: iphone ios cocoa-touch core-graphics core-text

我在CoreText中注意到,在开发我自己的自定义UITextView并查看Apple的SimpleTextInput时,空格或“”不会中断(或移到下一行)当它在线末端的空间用完时它就打开了。相反,它继续绘制在超过视图宽度边界的同一条线上。

这是一个错误,还是预期的行为?无论如何都要用CoreText来填充/打破下一行的空格?

更新:尝试单独设置空格以具有kCTLineBreakByCharWrapping属性,但它不起作用。想想可能有一些我可以输入的unicode字符而不是@" "可能让它正常工作?试着避免现在手动将它放在代码中。

2 个答案:

答案 0 :(得分:7)

根据设计,单独的空格不会触发换行符。只有跨越边距的可见字符才会触发换行符。

您可以使用CTLineCTLineGetTrailingWhitespaceWidth的末尾找到空格的宽度。

您可以通过附加CTRunDelegate属性来使空格字符导致换行(如果它穿过边距)。您必须使CTRunDelegate报告具有适当的宽度,上升和下降,您可能需要在CTFont中查找。对于以相同字体和大小设置的所有空格,您可以使用CTRunDelegate的单个实例。

答案 1 :(得分:4)

我使用-而不是“”,而不是在我绘制文字之前我应该​​将-放在哪里 被清理为空白。所以你可以在空白处做一些你喜欢的事情,我在这些地方画了一些emoji,它适合我。您可以尝试~ ^.^