[ UIScreen mainScreen ].applicationFrame

UIScreen应用框架坐标解析
本文探讨了[UIScreen mainScreen].applicationFrame的坐标值为0,20,320,460的具体含义及其在移动应用开发中的作用。该坐标值对于理解屏幕布局及适配不同设备尺寸具有重要意义。

[ UIScreen mainScreen ].applicationFrame 的数值为0,20,320,460

是的,`let screenWidth = UIScreen.main.bounds.size.width` 会在屏幕旋转时**更新为新的宽度值**,但需要注意以下几点: --- ### ✅ 原理说明 - `UIScreen.main.bounds.size.width` 是获取当前设备屏幕的物理宽度。 - 当设备发生旋转(例如从竖屏变为横屏)时,`UIScreen.main.bounds.size.width` 的值会自动更新为新的方向下的屏幕宽度。 - 因此,如果你在代码中使用了这个值,并且希望它在旋转后生效,你必须**在旋转事件触发时重新获取该值**。 --- ### ✅ 示例:如何响应屏幕旋转 #### 方法一:重写 `viewWillTransition(to:with:)` ```swift override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) coordinator.animate(alongsideTransition: { _ in let newScreenWidth = UIScreen.main.bounds.size.width print("屏幕旋转后的新宽度:$newScreenWidth)") // 在这里可以更新布局或视图尺寸 }, completion: nil) } ``` #### 方法二:监听通知(不推荐,已过时) ```swift NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: UIDevice.orientationDidChangeNotification, object: nil) @objc func orientationChanged() { let newScreenWidth = UIScreen.main.bounds.size.width print("屏幕旋转后的新宽度:$newScreenWidth)") } ``` > ⚠️ 注意:方法二依赖于 `UIDevice.orientationDidChangeNotification`,但它不会立即响应所有旋转事件,尤其是和 `UIViewController` 的生命周期结合时容易出错。 --- ### ✅ 总结 | 行为 | 是否支持屏幕旋转 | |------|------------------| | `UIScreen.main.bounds.size.width` | ✅ 可以获取新宽度 | | 是否自动刷新 | ❌ 不会自动刷新,需要手动调用 | | 推荐监听方式 | ✅ 使用 `viewWillTransition(to:with:)` | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值