ios - 使用 UIScreen 获取屏幕宽度以自动适应内容?
问题描述
我正在使用最新版本的Xcode
and Swift
。
我有Navigation Bar
一个Navigation Item Title
。
在某些屏幕较小的设备上,此标题太长,因此会被截断。
我的想法是:
首先,我计算特定宽度上适合多少个字符。(当然有 2-3 个字符的余量,因为有些字符比其他字符大。)
我必须有可能的标题,一个较长,宽度为 x 个字符,另一个是较短的交替,宽度为 y 个字符。
现在我根据字符数和当前屏幕可以占用的最大字符数检查较长的标题是否适合。如果没有,我将介绍其较短的替代品。
我想用以下代码测量屏幕宽度:
let screenWidth = UIScreen.main.bounds.size.width
这是正确的做法吗?或者这是否会根据屏幕分辨率输出不同的值,尽管设备的实际宽度是相同的……</p>
这是什么单位?像素?
注意:应用程序处于纵向模式,width
真实设备宽度也是如此。
解决方案
这是什么单位?像素?
从文档:
屏幕的边界矩形,以点为单位。
所以是积分。
这是正确的做法吗?
既然您正在尝试获取导航栏的宽度,为什么不直接获取导航栏的宽度呢?
navigationController?.navigationBar.bounds.width
这将与导航栏覆盖整个屏幕宽度时的值相同UIScreen.main.bounds.width
,但这样更有意义,不是吗?
另外,仅供参考,您可以使用特征集合检查屏幕宽度是否小。虽然这不如计算字符大小准确,但当您尝试使 UI 适应不同的屏幕尺寸时,这是 Apple 推荐的方法。
if traitCollection.horizontalSizeClass == .compact {
// small screen width
} else {
// big screen width
}
推荐阅读
- javascript - 有什么方法可以阻止重定向到主页 index.html?
- r - OOB 值从随机森林中以 Null 形式出现
- jquery - jQuery视差效果和滞后
- javascript - AppMaker 错误:“严重:由于循环引用而失败。” 当我尝试为“query.sorting”表运行服务器脚本时
- java - Spring Pagination ?size 确实影响请求时间
- amazon-web-services - 附加到实例“无法找到凭证”的 IAM 角色 - 无法命中元数据端点
- solr - sol 查询 6.6 中的 group.facet = true
- c# - EB GUIDE Studio extension doesn't work anymore after switching to version 6.8
- java - Firebase -(具有多个子节点用户唯一键的 DataSnapshot)-Null 对象引用
- jquery - 使用 NodeJS/Cheerio 拥有 JQuery 的 .text()