Word Wrap Line Break 仅在特定文本字符串的 UILabel 中不起作用

Word Wrap Line Break not working in UILabel only for specific text Strings

我有一个 UITableViewController,带有一个带有三个标签和一个按钮的自定义原型单元格。中间标签(称为 descriptionLabel)是一个多行标签,在属性检查器中设置了 Word Wrap 作为 "Line Breaks" 选项和 0 行。

如果我设置 descriptionLabel.text 属性 分配文字 String,Word Wrap 选项工作正常,如下图所示:

Cell with Word Wrap working

问题是 descriptionLabel 的文本来自一个对象。此对象是从网络服务下载并存储在本地,它还用于填充单元格的所有其他标签。

当我将对象-属性 字符串分配给 descriptionLabel 的文本 (cell.descriptionLabel.text = monthlyPaymentType.detail) 时,但是,自动换行不起作用,如下图所示:

Cell with Word Wrap NOT working

在这种情况下,"cobrado" 是一个单词,但它是字符换行而不是单词换行。

这很奇怪,因为如果我复制 print(monthlyPaymentType.detail) 的结果,将其粘贴为文字字符串并将其分配给 cell.descriptionLabel.text,自动换行选项也 不会 工作。

但是如果我手动键入一个与 print(monthlyPaymentType.detail) 内容完全相同的文字字符串并将其分配给 cell.descriptionLabel.text,Word Wrap 选项 起作用.

我在配置标签时做错了什么吗?我的对象中存储的字符串有问题吗?

问题是来自服务器并存储在对象中的字符串中的空格是 Unicode Non-Breaking Spaces (U+00A0)。当这些字符串被分配给 UILabel text 属性 时,不间断空格不被视为单词分隔符。

为了解决这个问题,我使用 String 的方法 stringByReplacingOccurrencesOfString("\u{00A0}", withString: "\u{0020}").

将出现的 U+00A0 字符替换为常见的 Unicode 空格 (U+0020)