随着折叠屏iPhone Duo推出,iOS开发面临新挑战,应用需全方位适配其外屏、内屏及折叠状态等多元形态。需通过Xcode 27.1优化构建,调整视图尺寸策略,采用标准布局容器等规范以适配不同屏幕尺寸、方向变化,同时应对工具栏、导航栏位置变化及新增保留区域。需注意摄像头遮挡行为,依据设备状态灵活选择摄像头,避免固定设备依赖。当前,折叠屏设备带来适配任务,但开发者普遍存在准备滞后的问题,需在设备发布初期主动完成调整。

--91likeyou---

为了让应用在 i 上正常运行,开发者应避免依赖固定的 i,例如 UIScreen.main.bounds。视图应改为相对于其容器确定尺寸。Apple 建议使用标准布局容器,包括 SwiftUI 堆栈、导航视图和分栏视图、标准标签栏以及 UIKit Auto Layout。这种方式可以确保所有视图根据可用空间的变化自动适配,无论设备正在使用外屏、完全展开的内屏,还是带有摄像头遮挡的部分折叠形态。

此外,Apple 也不建议开发者根据 userInterfaceIdiom 或 UIInterfaceOrientation 做出布局决策。应用应改为依赖尺寸类,即观察horizontalSizeClass和verticalSizeClass的变化,使应用 UI 适应不同尺寸。

i UI 的一项重大变化是工具栏和导航栏的位置:在某些设备形态下,它们可能垂直显示在屏幕侧边。使用 UIToolbar、UINavigationBar 或 UITabBar 创建自定义导航或工具栏的应用,可能无法正确适配。在这种情况下,Apple 建议使用标准导航和工具栏 API:在 SwiftUI 中为 NavigationStack 或 NavigationSplitView 添加 toolbar(content:) 修饰器;在 UIKit 中,则为已添加到导航控制器的视图控制器设置工具栏项目。

如前所述,i 还引入了新的保留区域。这些区域对应将屏幕分隔为不同部分的折痕,以及摄像头等硬件组件遮挡应用内容的区域。

框架提供的视图和容器会自动进行调整,以避开折痕或内屏上的前置摄像头,但你的自定义视图需要采用灵活的方法来识别分隔区域和遮挡区域。[…] 内屏前置摄像头启用时可能会遮挡视图,而外屏前置摄像头始终会遮挡视图。

开发者可以在 SwiftUI 中使用 reservedRegions(kind:options:layoutDirectionBehavior:),在 UIKit 中使用 reservedRegions(kind:options:),获取所有保留区域。

最后,开发者还应考虑到,i 可以通过外屏摄像头、内屏摄像头和后置摄像头拍摄照片与视频。打开、闭合或旋转设备都可能改变当前启用的摄像头。开发者可以根据摄像头朝向选择合适的摄像头。

应用开发者 Steve Troughton-Smith 在 Mastodon 上对 Apple 的公告作出了批评性回应,称“这就像一个全新平台突然发布,却只提前一个月通知”。用户 David 也表达了类似看法,他“想知道未来几个月究竟会有多少应用愿意适配 Duo”。

iOS Dev Weekly 编辑 Juan Marin 指出,这并不是 iOS 开发者第一次面对类似要求:

漂亮设备的问题在于,它们到来时总会带着作业,而作业永远是我们的。[…] 每一次,Apple 都提前多年告诉我们应该如何准备。每一次,我们中的大多数人却都是事后才开始行动。

不过,他也承认,大家早已知道“UIScreen.main.bounds 是一个只等某款设备出现便会暴露的 Bug,而现在,这款设备终于来了”。

:

🔥 热词:#iPhone duo开发者 · #iOS开发 iPhone duo适配 · #ios需要开发者模式下运行的app · #iphone开发者模式有什么用 · #iPhone duo应用适配 · #iphone需要联网以验证开发者 · #ios开发者模式对手机好处 · #ios未受信任的企业级开发者怎么解决