我有一个UITableViewController
,其中包含一个带有三个标签和一个按钮的自定义原型单元格。中间标签(称为descriptionLabel
)是一个多行标签,其中Word Wrap为“换行符”选项,并在“属性”检查器中设置了0行。
如果我设置了分配文字descriptionLabel.text
的{{1}}属性,则Word Wrap选项可以正常工作,如下图所示:
问题是String
的文本来自一个对象。此对象从Web服务下载并存储在本地,并且还用于填充单元格的所有其他标签。
但是,当我将对象属性String分配给descriptionLabel
的文本(descriptionLabel
)时,Word Wrap无法正常工作,如下图所示:
Cell with Word Wrap NOT working
在这种情况下,“cobrado”是一个单词,但它是字符包裹而不是单词包装。
这很奇怪,因为如果我复制cell.descriptionLabel.text = monthlyPaymentType.detail
的结果,粘贴为文字字符串并将其分配给print(monthlyPaymentType.detail)
,则Word Wrap选项也不会工作。< / p>
但是,如果我手动输入具有完全相同cell.descriptionLabel.text
内容的文字字符串并将其分配给print(monthlyPaymentType.detail)
,则Word Wrap选项会工作。
配置Label时我做错了什么?我的对象中存储的字符串有问题吗?
答案 0 :(得分:2)
问题是来自服务器并存储在对象中的字符串中的空格是Unicode Non-Breaking Spaces(U + 00A0)。将这些字符串分配给UILabel
text
属性时,不打破空格不会被视为字分隔符。
要解决此问题,我使用String
的方法stringByReplacingOccurrencesOfString("\u{00A0}", withString: "\u{0020}")
将公用Unicode空白(U + 0020)替换为U + 00A0字符的出现。