受疫情影响,今年设计开发加速器活动改为线上形式,本次参与的活动课题是《为 iPhone 和 iPad 搭建灵活适配的用户界面》。新出的几款 iPhone 和 iPad 设备尺寸和旧设备都不同,造成适配成本增加,本次活动目的是向开发者分享高效而灵活的适配方案。
避免屏幕分辨率硬编码
常见陷阱:对硬件设备型号做特殊判断
适配方面
- 启动屏
- 安全区和布局边框
- 尺寸类
- 动态字体
启动屏
用 Storyboard 启动屏,不建议用图片作为启动页,详见官方设计指南:
安全区和布局边框
安全区
UIScreen & UIWindow 获得布局尺寸进行排版不适用于 iPhone X 以及以后机型
要使用安全区来进行布局(安全区是动态的,不同设备、横竖屏、子视图都不相同)
.safeAreaInsets |
还可以根据需要定制安全区(例如定制工具栏)
.additionalSafeAreaInsets |
安全区发生变化时:
.viewSafeAreaInsetsDidChange() |
布局边框
.layoutMargins |
与安全区配合使用
子视图传递
布局边框会根据设备宽度、动态字体而自动调整,能够自动适配。
尺寸类
sizeClasses |
- C 紧凑型(iPhone竖屏,iPad分屏)
- R 常规型(iPad竖屏,12.9‘iPad等宽分屏)
动态字体
.large |
自定义字体
metrics = UIFontMetrics(...) |
more at WWDC2017
后记
2021年1月4日
今天收到 Apple 的邮件,设计开发加速器活动现在已经开放申请啦,感兴趣的朋友们可以去 官网 申请。
2021年2月1日
今天无意中发现又关闭申请入口了。
2021年4月9日
今天经同事提醒发现又开放申请了。