使用 UIScreen 获取屏幕宽度以自动适应内容?

Get screen width to automatically fit content with UIScreen?

我正在使用 XcodeSwift 的最新版本。

我有一个 Navigation Bar 和一个 Navigation Item Title

在一些屏幕较小的设备上,此标题太长,因此被截断了。

我的想法是:

  1. 首先我计算有多少个字符适合特定的宽度。 (当然有 2-3 个字符的余量,因为有些字符比其他字符大。)

  2. 我有可能的标题,一个较长,宽度为 x 个字符,另一个是较短的交替,宽度为 y 个字符。

  3. 现在我检查较长的标题是否适合,具体取决于它的字符数和当前屏幕可以容纳的最大字符数。如果没有,我将展示其较短的替代方案。

我想用下面的代码测量屏幕宽度:

let screenWidth = UIScreen.main.bounds.size.width
  1. 这样做合适吗?或者这例如根据屏幕分辨率输出不同的值,尽管设备的实际宽度是相同的……

  2. 这是什么单位?像素?

注意:应用程序处于纵向模式,因此 width 也是实际设备宽度。

What unit is this? Pixels?

来自docs

The bounding rectangle of the screen, measured in points.

所以是

Is this the right one to do this?

既然您要获取导航栏的宽度,为什么不直接获取导航栏的宽度

navigationController?.navigationBar.bounds.width

当导航栏覆盖整个屏幕宽度时,这将与 UIScreen.main.bounds.width 的值相同,但这样更有意义,不是吗?

另外,仅供参考,您可以使用特征集合检查屏幕宽度是否较小。虽然这不像计算字符大小那样准确,但当您尝试使 UI 适应不同的屏幕尺寸时,这是 Apple 推荐的方法。

if traitCollection.horizontalSizeClass == .compact {
    // small screen width
} else {
    // big screen width
}