ios - 防止 UILabel 字符换行符号

标签 ios uikit uilabel

我有一个包含以下文本的多行标签:

Lots of text here · $$$$

由于开头的文本是自由形式的,有时包装最终看起来像这样:

Lots of text here · $$$
$

如何防止这种情况发生?我希望它看起来像这样:

Lots of text here ·
$$$$

我已经尝试了每一个 lineBreakMode 都收效甚微。自动换行不起作用,因为它不会将 $$$$ 视为单词。

最佳答案

看起来您可能会从 UILabel 的子类化中获益,对于 NSLineBreakByWordWrapping 换行模式,它会以不同的方式处理字符串,它将您的语音单词视为单词。您将有效地扩展自定义 linebreakmode 考虑单词的定义。

您将不得不推出自己的换行算法。确定换行符位置的方法类似于以下内容:

  • 遍历字符串,获取每个字符,直到满足以下两个条件之一:a) 达到 View 的宽度,或 b) 达到空格,下一个单词(分隔符)由一个空格)不适合在同一行。

  • 如果您达到条件 a,您有两个选择——您可以采用从不将单词拆分为多行的策略,或者您可以只将不拆分规则应用于您的语音单词。无论哪种方式,当给定行上没有更多空间时,您都需要在拼音单词的开头插入换行符。

  • 您可能希望使用两个单独的字符串,以将源字符串与包含格式的显示字符串分开。

如果有帮助,请告诉我!

关于ios - 防止 UILabel 字符换行符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999879/

相关文章:

ios - Firebase 中的快照。如何深入挖掘快照

ios - actions 可以成为 MVVM ViewModel 的一部分吗?

iphone - 消除 UIImage imageNamed : FUD

ios - SwiftUI 中的自定义 segue 动画(导航动画)

ios - UIButton 不显示图像

iphone - 如何为 iPhone SMS 等部分文本添加下划线?

iphone - 在 MKMapView 上获取用户当前位置

ios - Xcode AVAudioPlayer 未播放

ios - 标签动画移动文本 - iOS

objective-c - 格式化数字以显示逗号和/或美元符号