ios - 自动换行换行符在 UI​​Label 中不起作用,仅适用于特定文本字符串

标签 ios cocoa-touch uikit uilabel

我有一个 UITableViewController ,其中包含一个带有三个标签和一个按钮的自定义原型(prototype)单元。中间标签(称为 descriptionLabel)是一个多行标签,其中自动换行作为“换行符”选项,并在属性检查器中设置 0 行。

如果我将 descriptionLabel.text 属性设置为分配文字 String,则自动换行选项可以正常工作,如下图所示:

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,Word换行选项也不起作用

但是,如果我手动键入与 print(monthlyPaymentType.detail) 内容完全相同的文字字符串并将其分配给 cell.descriptionLabel.text,则自动换行选项确实有效。

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

最佳答案

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

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

关于ios - 自动换行换行符在 UI​​Label 中不起作用,仅适用于特定文本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085556/

相关文章:

iphone - UIDatePicker UIDatePickerModeCountDownTimer 模式不能选择零分钟

iphone - 如何取消 UIView setAnimationDelegate 上的委托(delegate) : call?

ios - 更改 UITextView 键盘返回按钮的正确方法是什么

ios - 加大节点的攻丝面积。 ios swift

ios - 无法使用parentViewController (Swift) 关闭viewController

ios - Siri 与自定义意图的集成面临问题

ios - 从运行时卸载/释放/移除 React Native View

iOS在中国的网络访问权限

objective-c - Apple 代码示例 : TouchCells, 它是如何工作的?

ios - Xcode 中的 iOS 开发如何遵循 MVC 架构?