还没有开始适配之前,就已经听身边的程序猿伙伴在为iPhone X的刘海和HomeBar的存在而纷纷吐槽了。说的我都有些怕怕,胆子小,哈哈哈。下面针对在整理过程中发现的适配注意点进行简单总结。

一、iOS11

1、iOS11新增版本判断API

2、MJRefresh上拉刷新死循环

3、访问相册权限变更

4、UITableView相关适配

二、iPhone X

1、iPhone X尺寸

2、iPhone X上下显示黑条问题

3、导航栏适配

4、安全区域问题

5、上传警告问题
1.1、iOS11新增版本判断API

iOS11版本现在有了简单的API,OC也开始支持swfit的@available语法,就可以不用再手写判断iOS版本了。

if (@available(iOS 11.0, *)) {

// 版本适配

}

1.2、MJRefresh上拉刷新死循环

self.tableView.estimatedRowHeight=150.0f;

150这个数值是你cell的平均高度,如果estimatedRowHeight设置非常小,MJRefresh的KVO会监听错误的contentoffset,造成不停进行上拉加载操作。

1.3、访问相册权限变更

www.jianshu.com/p/cd0f814a7ce9

1.4、UITableView相关适配

www.jianshu.com/p/73394f7518c8

2.1、iPhone X尺寸

2.2、iPhone X上下显示黑条问题

运行Xcode9.0的iPhoneX模拟器, APP在iPhoneX屏幕没填充满,上下有黑色区域,这是因为app之前未用LaunchScreen.Storyboard作为启动页面,可以使用LaunchScreen来当做入场页面,这样APP才会自动适配为iPhoneX的大小。我的项目中是用Assets中的LaunchImage, 这样就可以修改Assets中的LaunchImage,添加iPhoneX的Launch图(1125*2436)

适配启动页入口

2.3、导航栏适配

导航栏新增了一种大标题样式,默认设置是不开启,所以不需要修改。

iOS 11以前,导航栏的高度是64,其中状态栏statusBar的高度是20,底部tabbar的高度是49。

iOS 11之后,iPhoneX的导航栏的高度是88,其中状态栏的statusBar的高度变成了44, 底部的tabbar变成了83。

iPhoneX的底部增加了虚拟Home区,由于安全区域的原因默认tabBar的高度由49变为83,增高了34,所以自定义的底部TabBar也需要需改其适配方案。

目前我们项目没有自定义底部TabBar, 则先不考虑吧, 先来考虑关于navi 在 iPhone X 上是88的问题.

目前没发现有iPhoneX的机型判断API,建议使用size来做代替判断。

#define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height

#define kNavBarHeight 44.0

#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)//tabBar高

#define kTopHeight (kStatusBarHeight + kNavBarHeight)//导航栏高

//判断iPhoneX

#define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

#define iPhoneX [[UIScreen mainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone

2.4、安全区域问题

iOS 11之前, automaticallyAdjustsScrollViewInsets经常被设置成NO,由开发者去控制处理留白和坐标问题, 但是11+automaticallyAdjustsScrollViewInsets = NO这句代码失效。

iOS 11后,把这个automaticallyAdjustsScrollViewInsets废弃,新增了contentInsetAdjustmentBehavior,这个属性是个枚举类型值,我们只需要把其设置成never就行了

解决tableView偏移88的问题,  我们可以对对 tableView 进行如下设置:

if (@available(iOS 11.0, *)) {

self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

} else {

self.automaticallyAdjustsScrollViewInsets = NO;

}
2.5、上传警告问题
打好ipa包之后,收到苹果方的邮件是下面这个样子的。


更新适配版本时 iPhone X 的启动图适配加上了, 千万别忘了也要传 Icon. 否则就会有上传版本时会有提示警告滴~


9月份上传的时候, 没有1024*1024的营销图标只是有警告, 现在上传的时候也是有警告的, 只不过现在提交审核的时候直接不能提交审核!

作者:肉肉要次肉
链接:http://www.jianshu.com/p/72a5519a371b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

顺便在此提供几个关于iOS11适配博客

有关iOS11和iPhoneX的适配问题

适配iOS11&iPhoneX的一些坑

iPhone X的简单适配

iOS11以及iPhone X遇到的相关问题相关推荐

  1. iOS11、iPhone X、Xcode9 适配指南

    2017.09.23 不断完善中... 2017.10.02 新增 iPhone X 适配官方中文文档 更新iOS11后,发现有些地方需要做适配,整理后按照优先级分为以下三类: 单纯升级iOS11后造 ...

  2. iOS11 与 iPhone X适配的那些坑(持更中...)

    目录 问题列表 1.适配iPhoneX 屏幕原则 2.适配过程一些常量的设置 3..iPhone X 上运行有黑色区域问题 4.iOS11导航栏适配 5.出现UIScrollview 漂移问题(基本都 ...

  3. iOS11 和 iPhone X 的适配

    一.首页进行iOS11系统的适配. 1.我手中的 iPhone6s更新到了11,发现UITableView 和 UICollectionView 的 页面页脚变宽了.原因是因为 iOS11 默认开启了 ...

  4. iOS11和iPhone X的适配

    随着iOS11和xcode9刚开始正式发布,小编也迫不及待的更新了xcode9,手机也顺利更新到iOS,也终于见到iPhone X 的真面不,看着齐刘海的样式,小编心里淡淡的忧伤,怎么适配,如何快速适 ...

  5. 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践

    一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...

  6. iphone怎么连接itunes相关解锁教程

       我们在使用手机时候,连续多遍输入密码错误,就会出现已停用的提示,就比如iphone当你输入密码错误时,就会提示要时隔多久才能在次输入,而如果多遍都错误的话,就会被停用,那这个时候怎么解决呢,有一 ...

  7. 适配iOS11以及 iPhone X 之 网利宝App

    Xcode 9 GM 已经可以下载了 作为 iOS 开发 岂能不抓紧适配iOS11 以及有齐刘海的 iPhone X 来保住饭碗呢 哈哈哈哈 文章目录 适配 iOS 11 MJRefreshHeade ...

  8. iphone开发中图像处理相关要点

    iPhone图像通常存储在以下4个地方: 相册(PhotoAlums):用户可以使用UIImagePickerController类提供的交互对话框从该相册中获取图像. 应用程序包:将图像与可执行程序 ...

  9. python3 获取/备份 iPhone icloud云端 中相关数据

    PyiCloud是一个允许pythonistas与iCloud webservices交互的模块.它由奇妙的请求 HTTP库提供支持. PyiCloud的核心是使用您的用户名和密码连接到iCloud, ...

最新文章

  1. Gartner:2020 年 AI 平台魔力象限:意外多多
  2. cdmp不停增长 oracle_系统内存不足导致oracle进程被误杀terminating the instance due to error 822...
  3. 【Ubuntu】Windows硬盘安装Ubuntu14.04
  4. Python 技术篇-sha256()加密的使用方法,sha1、md5加密方法
  5. 如何模拟超过 5 万用户的并发访问?
  6. Array.of()方法
  7. 弦论 —— 宇宙的琴弦
  8. javascript滚动条响应鼠标滑轮的实现上下滚动事件
  9. Javasocket编程步骤,已有千人收藏
  10. jsoup实现超简单的爬虫
  11. 怎样写商业计划书 【转载】
  12. 用Jekyll生成网页部署的若干问题
  13. 在verilog中将 .txt文件读入reg/将reg的数据写入.txt
  14. 解决非硬件问题导致的U盘总容量大幅减少
  15. 培养逻辑思维的app_逻辑思维学生端下载-逻辑思维学生端app下载1.1.22安卓版-西西软件下载...
  16. Jmeter beanshell语法
  17. Windows系统下安装配置 MinGW-w64 开发环境
  18. CMT2380F32模块开发20-射频收发例程
  19. Python办公自动化之收发邮件--163和qq邮箱
  20. 经典算法-递归-角谷定理

热门文章

  1. html5手机 一键开发,Html5变革下的H5和手机app开发工具
  2. ftp上传文件时出现 550 Permission denied,不是用户权限问题
  3. 推荐9个大气美观的前后端分离项目:前端react,vue,ts,ElementUI,Angular等,后端mysql,springBoot,myBatis,springSecurity,cloud等
  4. 短视频获客系统另附属源码理论分享
  5. 手机地理位置共享引发的不安全因素
  6. 使用Java模拟登录
  7. ESP32S3系列--FLASH及PSRAM配置
  8. python键盘控制_Python 键盘/鼠标控制
  9. 使用AutoJS实现2019天猫双11喵币自动领取
  10. 异步调用案例_异步案例研究