自动调整不同设备字体大小的最佳方法?

Posted

技术标签:

【中文标题】自动调整不同设备字体大小的最佳方法?【英文标题】:Best way to resize font sizes for different devices automatically? 【发布时间】:2018-10-22 00:35:24 【问题描述】:

所以,我的应用程序中有很多标签,并且像所有东西一样,它们具有自动布局,而且效果很好,但对于其中的文本。标签布局符合预期,但其中的文本在较小的设备中被剪切。

为避免这种情况,我尝试在界面构建中使用 AutoShrink 选项,但正如您在图片中看到的那样,它真的很乱:

iPhone 7 simulation without AutoShrink

iPhone SE simulation without AutoShrink

iPhone SE simulation with AutoShrink

因此,如您所见,所有标签的收缩程度都不同,导致不同大小的文本破坏了 App Harmony 和设计。

处理这种情况的最佳方法是什么?如果我需要缩小一个标签,如何使它们都缩小到相同的尺寸?

【问题讨论】:

这可能有点矫枉过正,但在过去的两个月里,“Swift Talk”一直在构建一个表单库。 talk.objc.io/episodes/S01E118-introduction-prototype我认为这一集是免费的——其他的都是免费的——但我喜欢他们正在做的事情。这个想法不是一直更改字体大小,而是在(a)您没有屏幕空间或(b)用户需要更大的字体大小(例如动态类型)时更改布局。除非这样?事情的代码,很快就会变得混乱。 【参考方案1】:

你可以使用adjustsFontSizeToFitWidth和minimumScaleFactor:

label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5

这会为长字符串创建一个较小的文本。

您还可以使用numberOfLines为标签添加更多行。 我认为第一个解决方案对你更好。

【讨论】:

以上是关于自动调整不同设备字体大小的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

将UIView中UILabel的字体大小调整为不同的设备大小

如何通过一次声明使字体大小响应不同尺寸的设备[重复]

字体大小反应原生

移动设备的 CSS 字体大小

在 sectionHeader 中自动调整字体大小

java导出excel字体大小不一样怎么处理