我正在使用Xcode
和Swift
的最新版本。
我有一个Navigation Bar
和一个Navigation Item Title
。
在某些屏幕较小的设备上,此标题过长,因此被截断了。
我的想法是:
首先,我计算一个特定宽度上可以容纳多少个字符。 (当然,允许使用2-3个字符,因为某些字符比其他字符大。)
我必须有可能的标题,一个标题较长,带有x个字符的宽度,另一个标题较短,另一个带有y个字符的宽度。
现在,我检查较长的标题是否适合,具体取决于其字符数和当前屏幕可容纳的最大字符数。如果没有,我将介绍其更短的替代词。
我想用以下代码进行屏幕宽度的测量:
let screenWidth = UIScreen.main.bounds.size.width
这是正确的方法吗?或者例如尽管设备的实际宽度是相同的,但还是会根据屏幕分辨率输出不同的值……
这是什么单位?像素?
注意:该应用程序处于纵向模式,因此width
也是实际设备的宽度。
答案 0 :(得分:1)
这是什么单位?像素?
来自docs:
屏幕的边界矩形,以点为单位。
所以是分。
这是这样做的正确选择吗?
既然您要获取导航栏的宽度,为什么不仅仅获取导航栏的宽度?
navigationController?.navigationBar.bounds.width
当导航栏覆盖屏幕的整个宽度时,该值将与UIScreen.main.bounds.width
相同,但是这样更有意义了,不是吗?
此外,仅供参考,您可以使用特征集检查屏幕宽度是否较小。尽管这不如计算字符的大小准确,但是这是Apple在尝试使UI适应不同屏幕大小时的推荐方法。
if traitCollection.horizontalSizeClass == .compact {
// small screen width
} else {
// big screen width
}