iOS16适配指南之UIDevice

UIDevice 在 iOS 16 中主要有 2 大变化。

  1. 获取设备信息时,无法获取设备前面用户的信息。
import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let name = UIDevice.current.name
        // iOS16之前:XXX iPhone 13 Pro Max
        // iOS16之后:iPhone 13 Pro Max,不再包含用户信息
        print(name)
    }
}
  1. 不再支持通过setValue()方法设置设备的方向,替换为 UIWindowScene 的requestGeometryUpdate()方法。与之相关的一个问题是设备方向变化通知UIDevice.orientationDidChangeNotification在 iOS 16 中无法触发。
import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene
        // 通过UIWindowScene的requestGeometryUpdate()设置
        windowScene?.requestGeometryUpdate(.iOS(interfaceOrientations: .landscapeLeft))
    }
    
    // MARK: 设备方向变化通知在iOS16中无法触发,但下列方法仍然会触发
    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        print(#function)
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS 16 真机调试时需要在设备的设置 —> 隐私与安全 —> 开发者模式 中打开开发者模式。 新增 UICal...
    YungFan阅读 10,148评论 17 23
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,790评论 8 265
  • 前言: iOS13的API的变动和适配问题,我从新特性适配、API 适配、方法弃用、工程适配、SDK 适配、其他问...
    smile丽语阅读 1,332评论 0 4
  • 最近一朋友正准备跳槽,就从各处搜索整理一些基础,便于朋友复习,也便于自己复习查看. 1. 回答person的ret...
    smile丽语阅读 1,854评论 0 7
  • 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现cl...
    以德扶人阅读 2,584评论 2 50