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

时间:2020-06-26 06:48:26

标签: ios swift xcode width uiscreen

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

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

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

我的想法是:

  1. 首先,我计算一个特定宽度上可以容纳多少个字符。 (当然,允许使用2-3个字符,因为某些字符比其他字符大。)

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

这是什么单位?像素?

来自docs

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

所以是

这是这样做的正确选择吗?

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

navigationController?.navigationBar.bounds.width

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

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

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