我有一个 UITableViewController
,其中包含一个带有三个标签和一个按钮的自定义原型(prototype)单元。中间标签(称为 descriptionLabel
)是一个多行标签,其中自动换行作为“换行符”选项,并在属性检查器中设置 0 行。
如果我将 descriptionLabel.text
属性设置为分配文字 String
,则自动换行选项可以正常工作,如下图所示:
问题在于 descriptionLabel
的文本来自对象。该对象是从网络服务下载并存储在本地的,它还用于填充单元格的所有其他标签。
但是,当我将对象属性字符串分配给 descriptionLabel
的文本 (cell.descriptionLabel.text = MonthlyPaymentType.detail
) 时,自动换行不是工作正常,如下图所示:
Cell with Word Wrap NOT working
在本例中,“cobrado”是一个单词,但它是字符换行而不是单词换行。
这很奇怪,因为如果我复制 print(monthlyPaymentType.detail)
的结果,粘贴为文字字符串并将其分配给 cell.descriptionLabel.text
,Word换行选项也不起作用。
但是,如果我手动键入与 print(monthlyPaymentType.detail)
内容完全相同的文字字符串并将其分配给 cell.descriptionLabel.text
,则自动换行选项确实有效。
配置标签时我做错了什么吗?我的对象中存储的字符串有问题吗?
最佳答案
问题是来自服务器并存储在对象中的字符串中的空格是 Unicode Non-Breaking Spaces (U+00A0)。当这些字符串分配给 UILabel
text
属性时,不间断空格不会被视为单词分隔符。
为了解决此问题,我使用 String
的方法 stringByReplacingOccurrencesOfString("\u{00A0} ", withString: "\u{0020}")
。
关于ios - 自动换行换行符在 UILabel 中不起作用,仅适用于特定文本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085556/