首页 > 解决方案 > 使用 UIScreen 获取屏幕宽度以自动适应内容?

问题描述

我正在使用最新版本的Xcodeand Swift

我有Navigation Bar一个Navigation Item Title

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

我的想法是:

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

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

  3. 现在我根据字符数和当前屏幕可以占用的最大字符数检查较长的标题是否适合。如果没有,我将介绍其较短的替代品。

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

let screenWidth = UIScreen.main.bounds.size.width
  1. 这是正确的做法吗?或者这是否会根据屏幕分辨率输出不同的值,尽管设备的实际宽度是相同的……</p>

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

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

标签: iosswiftxcodewidthuiscreen

解决方案


这是什么单位?像素?

文档

屏幕的边界矩形,以点为单位。

所以是积分

这是正确的做法吗?

既然您正在尝试获取导航栏的宽度,为什么不直接获取导航栏的宽度呢?

navigationController?.navigationBar.bounds.width

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

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

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

推荐阅读