我在 CoreText
中注意到,在开发我自己的自定义 UITextView
以及查看 Apple 的 SimpleTextInput
时,空格或“”不会当行尾的空间用完时,它不会中断(或移动到下一行)。相反,它会继续绘制在超过 View 宽度边界的同一条线上。
这是一个错误,还是预期的行为?无论如何,是否有空间用 CoreText
换行/换行到下一行?
更新:尝试单独设置空格以具有 kCTLineBreakByCharWrapping
属性,但没有成功。想也许有一些 unicode 字符我可以输入而不是 @""
可能让它正常工作?暂时避免将其手动放入代码中。
最佳答案
根据设计,空格本身不会触发换行符。只有越过边距的可见字符才会触发换行。
您可以使用 CTLineGetTrailingWhitespaceWidth
找到 CTLine
末尾的空白宽度。
您可以通过将 CTRunDelegate
属性附加到它来使空白字符导致换行(如果它越过边距)。您必须让 CTRunDelegate
报告适当的宽度、上升和下降,您可能需要在 CTFont
中查找这些内容。对于设置为相同字体和大小的所有空格,您或许可以使用 CTRunDelegate
的单个实例。
关于iphone - CoreText - 空格不换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876271/