iOS开发:兼容适配iPhone X
打个硬广,少儿编程培训是我的副业,有加入我们在公众号留言!
本文转自:CocoaChina公众号推荐文章
屏幕
我们在编码中使用的是以point为单位的屏幕尺寸(在不同设备上每个point对应的实际像素点是不一样的),iPhone 8的尺寸是375pt × 667pt @2x,iPhone X的尺寸是375pt × 812pt @3x,也就是屏幕宽度是一样的,但是高出了145pt,大概能多显示20%的内容。
注意iPhone X的屏幕素质比较好,所以它需要加载较高像素的图片,我们要提供必要的@3x资源。
另外由于iPhone X极高的长宽比,我们用作背景的图片都需要重新设计,以保证比例适合,内容被裁切后效果仍然ok。
status bar
iPhone X的状态栏高度是高于之前所有的iPhone版本的,所以在代码里写死kStatusBarHeight == 20的地方都会出错!
也就是说,之前使用固定状态栏高度来进行布局的代码都需要调整为动态布局方式,否则会出现内容被遮挡的问题。特别是图中这个64,一直在iOS开发中常数般的存在,最后也被苹果爸爸摆了一道。
关于状态栏另外两个需要注意的地方:
不要在iPhone X下隐藏状态栏,一个原因是显示内容足够高了,另一个是这样内容会被刘海切割。
现在通话或者其它状态下,状态栏高度不会变化了,程序不需要去做兼容。
布局
iPhone X的布局有很多改变,这是因为:
刘海的存在使横屏的情况变得复杂
四个角变圆,需要防止内容被切割
代替home键的长条(不知道官方名字叫什么,homeBar?)使得屏幕底部的布局需要调整
很多系统经典的控件,比如TableView,Collection,Navigation,TabBar等都会自动适应iPhone X(呵呵,一定会有很多坑等着打补丁或者让开发者擦屁股)。
Safe Area
iOS11引入了safeArea的概念,用来替代之前的topLayoutGuide和bottomLayoutGuide,safeArea用来描述视图不被任何内容遮挡的部分。它提供两种方式:safeAreaInsets或safeAreaLayoutGuide来提供给你safeArea的参照值。
在iPhone X上,视图的默认safeArea如下图所示:
可以看到,底部的Bar还有四周圆角,都对这个safeArea进行了切割。苹果官方的设计指导是使用以safeArea为框,以layoutMargin为间距来进行UI布局。
横屏
在横屏状态下,不能因为刘海的原因将内容向左或者向右便宜,要保证内容的中心对称:
另外,之前所有版本的iPhone tableView的cell和它的contentView的大小是相同的,开发者相对cell布局和相对contentView布局效果上不会有太大区别。
但是在iPhone X下,由于刘海和圆角的存在,tableView的contentView会被裁切,所以所有的布局都应该被调整为相对contentView布局,否则会越界:
一致性
苹果对iOS中运行的app的一致性有很高的要求,在iPhone X下,开发者不能自己去遮盖圆角、状态栏,特别是底部的homeBar,即使你认为刘海很丑,也许用户看着看着就习惯了呢……
关于homeBar,它的颜色是会自动适应的,保持着『时刻能找到但是又不那么显眼』的状态,所以开发者不用去为它费心添加背景啊,强调啊啥的,苹果爸爸会十分感动然后拒绝掉你的……
交互
在交互方面,iPhone X最大的改变就是底部那个无时无刻不存在的homeBar了,代替了原来home按键的功能,系统级的任务切换和回到桌面 、、,都是上滑这个细细的长条。
所以苹果爸爸的意思是:
赶紧把你自己写的上滑手势乖乖删掉~
当然如果app确实需要这个手势,可以打开程序开关覆盖系统的手势,但是这样用户就需要滑动两次来回到桌面了,这会让他们非常怀念home键。
兼容
首先是iPhone X下的键盘和其他系统有区别,会多出来那个很有趣的animateEmoji工具栏,所以在做键盘相关处理的时候要关注兼容性问题,至少:高度不要写死了……
iPhone X的认证使用的是全新的faceId,所以如果app需要使用认证相关api,需要根据设备区分touchId和faceId,可以看文档。
iOS开发:兼容适配iPhone X相关推荐
- 【无限互联】iOS开发视频教程—1.iPhone开发概述——必看
核心内容: 1. iPhone开发概述 2.iOS体系的发展历史 3.授课方法 4.学习方法 5.如何锻炼解决问题的能力 视频地址:1.iPhone开发概述-必看
- iOS开发---如何查看iPhone手机的UUID
UUID是由字母和数字组成的40个字符串的序号,用来区别每一个唯一的iOS设备 一般来说iPhone手机可以安装通过Apple发布的软件,上的软件都是经过Apple核准过的,但在发布到 AppStor ...
- iOS 开发屏幕适配尺寸
2019独角兽企业重金招聘Python工程师标准>>> iPhone 4 width 320 height 4 ...
- iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等
保证能判断,呕心沥血,不行切JIJI 方法一 Objective-C // iPhoneX.iPhoneXR.iPhoneXs.iPhoneXs Max等 // 判断刘海屏,返回YES表示是刘海屏 - ...
- iOS开发----UI部分----iPhone各类屏幕的分辨率
// 通过高度来区别 4.5 通过比例来区别 5和6 4 320 * 380 320/380 = 0.84 5 320 * 568 320/568 = 0.56 6/6S/ ...
- IOS开发 ios7适配
ios7控制器试图默认为全屏显示,导航栏的不同设置会产生不同的效果. 首先判断系统的的版本,区别: if (floor(NSFoundationVersionNumber) <= NSFound ...
- IOS开发之判断iPhone连接的网络(WiFi,2G,3G,LTE,4G)是IPV4还是IPV6网络
可能问题太简单了,在网上没有找到答案,只好我自己写了. 由于苹果审核我们的应用在ipv6环境下,无法连接到服务器.所以把原来的用IP作为请求网址改成了域名来发请求.虽然审核过了,但是在国内还有域名解析 ...
- IOS 开发 iPhone屏幕尺寸、分辨率及适配
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point ...
- iOS开发适配iPhone X 齐刘海处理,代码适配iPhoneX
我的简书新地址,欢迎点击查看哦~ 今天手头工作完事了,然后升级了Xcode9,变化很大啊,先说大家一直关心的适配齐刘海吧. 这个东西好像出来之后 我QQ群里面iOS开发的很多人都炸了.确实这个齐刘海对 ...
最新文章
- 火狐linux ubuntu16.04,Ubuntu 16.04 安装 Firefox 48.0 beta版
- onvirt安装linux系统
- linux 添加路由_linux网络知识:路由策略(ip rule,ip route)
- go语言 函数相关1:实参到形参的传递永远是值拷贝
- lombok之@RequiredArgsConstructor注解
- PyTorch 1.0 中文文档:torchvision 参考
- java 解析xml字符串的_java 解析xml字符串
- MQTT-WebSocket连接通信
- 『TensorFlow』分布式训练_其二_单机多GPU并行GPU模式设定
- 团队项目改进与详细设计
- ubuntu下安装redis及在php中使用
- Dialog是逻辑字体,实际绘制时会选择不同字体
- 罗永浩承认鸟巢发布会不成功,还说苹果把大家都带歪了,你怎么看?
- 6.ring3-ImportREC重建输入表
- java中的坦克大战游戏设计报告论文_基于Android平台坦克大战游戏的设计与实现...
- python base_Python base(一)
- Scrum立会报告+燃尽图(十月十一日总第二次):需求分析
- 解决 npm install 时出现的.git can‘t be found (see https://git.io/Jc3F9)的问题 run `npm fund` for details问题解决
- 谷歌浏览器设置缓存方法
- 信号与通信系统【期末复习提纲·绪论】