我在CoreText
中注意到,在开发我自己的自定义UITextView
并查看Apple的SimpleTextInput
时,空格或“”不会中断(或移到下一行)当它在线末端的空间用完时它就打开了。相反,它继续绘制在超过视图宽度边界的同一条线上。
这是一个错误,还是预期的行为?无论如何都要用CoreText
来填充/打破下一行的空格?
更新:尝试单独设置空格以具有kCTLineBreakByCharWrapping
属性,但它不起作用。想想可能有一些我可以输入的unicode字符而不是@" "
可能让它正常工作?试着避免现在手动将它放在代码中。
答案 0 :(得分:7)
根据设计,单独的空格不会触发换行符。只有跨越边距的可见字符才会触发换行符。
您可以使用CTLine
在CTLineGetTrailingWhitespaceWidth
的末尾找到空格的宽度。
您可以通过附加CTRunDelegate
属性来使空格字符导致换行(如果它穿过边距)。您必须使CTRunDelegate
报告具有适当的宽度,上升和下降,您可能需要在CTFont
中查找。对于以相同字体和大小设置的所有空格,您可以使用CTRunDelegate
的单个实例。
答案 1 :(得分:4)
我使用-
而不是“”,而不是在我绘制文字之前我应该将-
放在哪里
被清理为空白。所以你可以在空白处做一些你喜欢的事情,我在这些地方画了一些emoji
,它适合我。您可以尝试~ ^.^