首页 > 解决方案 > Xcode IB - UILabel 多行文本换行问题 iPhone X + 较新型号

问题描述

我正在构建一个应用程序,该应用程序在屏幕中心显示一个标签,并且文本会根据用户在单独的表格视图中选择的单元格而变化。到目前为止,我主要在 iPhone 7 Plus 和旧设备上进行测试,但现在我有 iPhone Xs,我发现了一个恼人的文本换行问题。这是我对 UILabel 的 IB 设置:

在此处输入图像描述

UILabel 应该有 3 行可用。默认字体大小为 150,但考虑到我设置的最小字体比例,文本应该能够缩小到 15 号。绝大多数可选文本输入按预期工作,文本缩放和换行符适当地显示在 1、2 或 3 行上。有几个文本选项会在单词中间被截断,就像这样(在这个例子中,文本应该占 2 行,在 'n' 和 '2' 之间的空格处断开):

在此处输入图像描述

烦人的部分是这个文本换行问题只发生在 iPhone X 或更新的型号上。任何来自 8 Plus 或更早版本的手机都可以正常显示。我尝试弄乱约束(标签的侧面距离安全区域 20 点,顶部/底部连接到 UIView 的上方和下方),但到目前为止还没有成功。

在此先感谢您的帮助!

编辑:调整标签的高度(减少它)似乎可以让文本正确显示,但如果可以的话,我更愿意保持高度不变。我仍然对为什么文本不能正确自动收缩并在空格处换行感到困惑。

标签: iosiphonexcode

解决方案


我在这里找到了一个解决方案:iOS UILabel autoshrink so word doesn't truncate to two lines

本质上,该函数确定字符串中最长单词的长度并调整字体大小以适应该单词。我需要解决的唯一另一件事是在调用函数之前将字体大小重置为原始大小,以便将具有较短单词的字符串从原始大小向下调整,而不是使用先前调整的字符串的字体大小。


推荐阅读