gpt4 book ai didi

objective-c - UILabel 自动换行/字符换行

转载 作者:技术小花猫 更新时间:2023-10-29 11:02:27 24 4
gpt4 key购买 nike

我有一个 UILabel,其 lineBreakMode 设置为 UILineBreakModeWordWrap。这很好用,除非我有一大段没有空格的文本。在这种情况下,它不会包裹长文本,而是在它到达 UILabel 框架的右手端时将其切断。在这种情况下,我如何告诉 UILabel 它应该在字符边界上换行 only (本质上等同于 UILineBreakModeCharacterWrap 设置,但仅适用于那些长的无空格文本) .

提前致谢!

最佳答案

对于遇到同样问题的其他人,我最终通过使用 UITextView 而不是 UILabel 来解决它。这是最佳解决方案,原因有二:

  1. 它不需要任何自定义行为来确定文本是否包含空格并将 UILabel 的换行模式更改为/从单词/字符换行。

  2. 更重要的是,有一种边缘情况,您可能有普通单词(您想要在单词边界处换行)加上超长文本(您需要在字符边界处换行)。除了编写某种逻辑来在超长文本(在正确的位置)中插入一个空格来强制“假自动换行”之外,我看不到任何处理单词和字符换行的方法,具体取决于情况,在一个 UILabel 中。 UITextView 会自动处理这种情况,根据需要打破单词边界或字符边界。

有关我如何执行此操作的细节,我有一行 UITextView 禁用了编辑和滚动。我还设置了 .contentInset 以移除填充,使其看起来(在不知情的人看来)就像一个 UILabel。然后我使用 sizeWithFont:constrainedToSize:lineBreakMode: 方法来确定渲染文本的框架,并相应地调整 UITextView 的框架,使其完全适合文本.

希望这对您有所帮助!

关于objective-c - UILabel 自动换行/字符换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8355175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com