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

文章目录

  • 适配 iOS 11

    • MJRefreshHeader 漏出马脚
    • TableView 滑不到最底部
  • 适配 iOS X
    • 启动图设置
    • Tabbar 出现透明悬浮
    • 出现导航栏不明线条(这个是导航栏高度变化导致的问题)

一 首先来适配 iOS 11

问题一 : 自定义的头部刷新在自然情况下也会漏出一些马脚

问题一 分析:

来看一下苹果的官方 API

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets
API_DEPRECATED_WITH_REPLACEMENT("Use UIScrollView's contentInsetAdjustmentBehavior instead", ios(7.0,11.0),tvos(7.0,11.0)); // Defaults to YES
复制代码

可以看到automaticallyAdjustsScrollViewInsets这个属性的说明在 iOS11中被废弃了 要使用contentInsetAdjustmentBehavior这个属性去代替 所以当ableview的frame超出了安全区域后系统会自动的调整SafeAreaInsets的值,而iOS 11中真正影响tableview内容与边缘的变成了adjustedContentInset而不是以前的contentInset。 由于系统对adjustedContentInset进行了调整导致了tableView的内容到边缘的距离发生了变化,下移距离分别是20pt(没有navigationBar,下移了一个statusBar的高度),64pt(navigationBar的高度以及statusBar的高度)。

问题一 解决 代码实现

    if (@available(iOS 11.0, *)) {self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;} else {self.viewController.automaticallyAdjustsScrollViewInsets = NO;}
复制代码

可以简单粗暴的直接判断版本已进行适配不同 API 就可以了 contentInsetAdjustmentBehavior 意思是让adjustContentInset值不受SafeAreaInset值的影响。

至于安全区域的概念也是 iOS11 刚提出来的 可以参考这篇文章腾讯开放平台: iOS11适配安全区域

问题二

可以看到图片 TableView 滑不到最底部

问题二分析

也是涉及到安全区域腾讯开放平台: iOS11适配安全区域

如果你的APP中使用的是自定义的navigationbar,隐藏掉系统的navigationbar,并且tableView的frame为(0,0,SCREEN_WIDTH, SCREEN_HEIGHT)开始,那么系统会自动调整SafeAreaInsets值为(20,0,0,0),如果使用了系统的navigationbar,那么SafeAreaInsets值为(64,0,0,0),如果也使用了系统的tabbar,那么SafeAreaInsets值为(64,0,49,0)。

问题二 解决

       UIEdgeInsets edges = UIEdgeInsetsMake(0, 0, 64, 0);tableView.contentInset = edges;tableView.scrollIndicatorInsets = edges;
复制代码

二 接着来适配 iPhone X

问题一

APP 的内容并没有充满整个屏幕

问题一 分析

其实这个问题我们之前可能就碰见过 那就是 如果启动图尺寸配置的不正确的话 内容都会比屏幕尺寸小

问题一 解决 准备一张尺寸:1125 * 2436的启动图片, 移动到LaunchImage的Finder目录中, 并在LaunchImage中的Contents.json文件中增加 (注意Json格式):

{"extent" : "full-screen","idiom" : "iphone","subtype" : "2436h","filename" : "图片名字.png","minimum-system-version" : "11.0","orientation" : "portrait","scale" : "3x"}复制代码

问题二

导航栏出现不明线条

问题二分析 先看一下设置导航条背景色 的代码

// 此方法内部是返回一个高度为64的 渐进色  UIColor *color = [UIColor colorWithTopColor:WLBHexColor(@"005CCC") bottomColor:WLBHexColor(@"006ADB") height:NAVIGATION_HEIGHT];self.navigationController.navigationBar.barTintColor = color;
复制代码

看到代码应该就知道是 NAVIGATION_HEIGHT = 64这个高度的问题了

因为iPhone X的StatusBar高度有所改变 在其他型号的iPhone上StatusBar是20 在iPhone X上StatusBar的高度是44,

所以原本的20(StatusBar)+44(NavBar) = 64 如今变成了如今的44(StatusBar) + 44(NavBar) = 88;

问题二解决方案

// 判断是否是 iPhone X 的宏#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)UIColor *color = [UIColor colorWithTopColor:WLBHexColor(@"005CCC") bottomColor:WLBHexColor(@"006ADB") height:iPhoneX ? NAV_BAR_HEIGHT + 24 : NAV_BAR_HEIGHT];self.navigationController.navigationBar.barTintColor = color;复制代码

问题三

tabbar 出现悬浮状态

问题三分析

是因为没有设置下边这句代码导致的 self.tabBar.translucent = NO; 这句表示取消tabBar的透明效果。

苹果官方文档解释:

UINavigationBar/UITabBar的translucent属性解释:默认为YES,可以通过设置NO来强制使用非透明背景,如果导航条使用自定义背景图片,那么默认情况该属性的值由图片的alpha(透明度)决定,如果alpha的透明度小于1.0值为YES。如果手动设置translucent为YES并且使用自定义不透明图片,那么会自动设置系统透明度(小于1.0)在这个图片上。如果手动设置translucent为NO并且使用自定义带透明度(透明度小于0)的图片,那么系统会展示这张背景图片,只不过这张图片会使用事先确定的barTintColor进行不透明处理,若barTintColor为空,则会使用UIBarStyleBlack(黑色)或者UIBarStyleDefault(白色)。 设置导航栏背景图片透明度问题

如果背景图片没有透明度,系统会自动把导航控制器的栈顶控制器的view的Y值增加64,如果没有透明度,则不会增加。 这一情况的图片必须是imageSet格式的,并且图片的透明度为1(不透明),系统才会去调整。

问题三解决 如问题分析所示 在 UITabbarController 中添加以下代码

self.tabBar.translucent = NO;
复制代码

适配iOS11以及 iPhone X 之 网利宝App相关推荐

  1. iOS 适配iOS11、iPhone X

    关于iPhone X尺寸及safe area 参考: http://www.ui.cn/detail/283956.html iPhone X 导航上和tabBar下两处空白(黑条) 解决方案:导入一 ...

  2. 迟到的 cocoapod 版本适配 之网利宝

    背景: 使用过 cocoapod 的都知道 在16年8月份左右 cocoapod 的podfile 文件里边的格式变了 由原来的不需要指定 target 变成了需要指定 target 了 (如下图) ...

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

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

  4. iOS11和iPhone X的适配

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

  5. iOS11以及iPhone X遇到的相关问题

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

  6. iOS 采用@available(iOS 11.0, *)适配 iOS11,会引起调用系统相册时,系统界面上移问题

    我们在使用以下方法适配 iOS11,避免滚动视图顶部出现20的空白以及push或者pop的时候页面有一个上移或者下移的异常动画的问题时,会导致一个问题,就是当我们的应用调用系统相册时,引起系统相册界面 ...

  7. 唏嘘!暴风影音官网、APP挂掉,办公地人去楼空,官方心酸回应...

    自上周,暴风影音官方网站访问就出现问题,加载非常缓慢且打开后是乱码排版,同时暴风影音手机App也显示网络异常. 一下子,暴风影音官网.App全挂,被称为"猝死". 根据央视报道,1 ...

  8. 暴风影音官网、App 挂了;工信部总结“携号转网”试运行情况;Zorin OS 15 Lite 发布 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  9. 苹果xR为什么显示不了服务器,苹果手机iPhone XR无法连接到APP Store的解决方法

    最近有iPhone XR新系列手机用户发现打不开应用商店,提示"无法连接到APP Store".有些用户通过强制刷新APP Store又正常了,但是比较慢,而部分用户还是无法连接. ...

最新文章

  1. 循环冗余码CRC使用matlab实现
  2. 熵权法excel计算过程_翅片式蒸发器如何最简单的进行计算和仿真?
  3. [C++]有关深复制与copy constructor的一些问题与实例
  4. C++虚继承中构造函数和析构函数顺序问题以及原理
  5. 前端学习(2910):vue的介绍
  6. 支持向量机SVM的学习笔记
  7. 弃用 Oracle!
  8. PHP包管理器PEAR 中爆多个缺陷可发动供应链攻击,已潜伏15年
  9. zabbix_get查看agent端的key值提示没有权限:Permission denied
  10. 晨风机器人成语接龙_使用晨风QQ机器人在群内玩成语接龙的方法
  11. XML学习总结(三)——SAXReader解析xml文件数据
  12. ICEM划分网格实例——六角形螺栓
  13. xposed框架安全模式_Android 系统上的 Xposed 框架中都有哪些值得推荐的模块?
  14. Spring colud gateway 源码小计
  15. bmi计算器公式_bmi计算器公式
  16. Android 判断app是否正在播放音乐
  17. 数字电路逻辑设计笔记(3):集成逻辑门电路
  18. 2019年河南省ACM大学生程序设计竞赛原题
  19. 网站中轮播图的制作方法
  20. G. The Galactic Olympics

热门文章

  1. 密码加密工具类(非简单的MD5,UUID加密);
  2. 大理大学计算机专业全国排名,大理大学(专业学位)计算机技术考研难吗
  3. 迟迟没写的周记(上一周)
  4. 自私的基因-读标题的到的信息
  5. Cesium中通过Primitive显示大量的点以及点的运动
  6. 生活随笔:怀念在广州大学的日子
  7. ITFLY8架构师之家公众号试运营
  8. [python]...
  9. HTML荧光文字特效,html – 在CSS中的笔荧光笔效果
  10. 计算机毕业设计 SSM与VUE的毕业设计管理系统(源码+论文)