iOS 11 及 iPhoneX 适配知识

iOS 11 & iPhoneX 适配 一、safeArea automaticallyAdjustsScrollViewInsets to contentInsetAdjustmentBehavior 在iOS 11中,苹果废弃了 UIViewController 的automaticallyAdjustsScrollViewInsets属性,改用UIScrollView 的 contentInsetAdjustmentBehavio 阅读详情

一、前言


前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了。不得不说,新系统和新机型的发布确实是给 iOS 开发者带来了不小的工作量,因此有必要将 58 同城 iOS 客户端适配过程中遇到的问题跟大家分享一下。


二、iOS 11 UIKit


在适配 iOS 11 之前,我们首先要弄清楚 iOS 11 做了哪些改动,哪些改动会对我们现有的应用产生影响,这样有助于我们分析现象。建议大家看下 WWDC 的官方视频,视频中提到了如何适配 iOS 11 及如何设计和适配 iPhoneX 新机型:


  • Updating Your App for iOS 11:https://developer.apple.com/videos/play/wwdc2017/204/

  • Building Apps for iPhone X:https://developer.apple.com/videos/play/fall2017/201/

  • Designing for iPhone X:https://developer.apple.com/videos/play/fall2017/801/


1. UIKit’sBars


图 1 UIKit’sBar 提供 size 的方法截图


iOS11 UIKit’sBar 改动很大,对现有的应用来说 UINavigationBar 的 titleView 适配应该是最大的问题,LargeTitle 虽然看起来似乎是很大的改动,但是实际上对现有的应用没有太多的影响。iOS11 之后 UINavigationBar 和 UIToolbar 支持 Auto Layout ,开发者必须要提供自定义视图的 size。如果自定义 titleView 中使用了 Auto Layout,那么通过设置自定义 titleView 的 frame 的方式来设定 size 在某些场景下可能就不再合适了,开发者应该着重注意下自定义 view 内部的约束(具体案例将在下文中阐述)。如图 1 所示,我们可以通过以下三种方式来提供 size:


  • 约束自身宽高;

  • 实现 intrinsicContentSize 方法;

  • 利用子视图宽高及间距来约束 titleView;


2. UIScrollView


图 2 安全区域示意图


iOS11 引入了安全区域的概念,默认情况下安全区域是指 NavigationBar 以下 TabBar 以上的区域(iPhoneX 则不包括底部的虚拟 Home 区域),也就是说 StatusBar、NavigationBar、TabBar、虚拟 Home 都不是安全区域(可参见图 2)。为了帮助开发者判断各个 view 与安全区域的距离关系,iOS11 在 UIView 加入了一个属性:



需要注意的是这个属性是描述 view 与页面安全区域的距离关系,如果 view 的某个方向超过了安全区域则这个方向的数值为正数,如果 view 完全在安全区域内则 safeAreaInsets 的值全为 0。如在图 3 所示一个空白页面中。


图3 安全区域测试图


红、蓝 view 是父子视图的关系,且蓝色子视图完全在红色视图内,由于红、蓝两个 view 顶部超过安全区域 44 点(状态栏 44 高度),所以它们的 safeAreaInsets 都为 {44, 0, 0, 0},也就是说在同一个控制器中,他们的安全区域是一致的,与视图层级无关。在一个控制器中,安全区域并不是固定不变的,可以通过 ViewController 的 additionalSafeAreaInsets 方法来修改页面的安全区域,如果此时将安全区域上延 11 个点。



那么它们的 safeAreaInsets 都会变为 {33, 0, 0, 0}。


我们再来看 UIScrollView 新增加的两个很重要的属性:



iOS 11 中 adjustedContentInset 是用来调整 scrollView 内容边距的属性,这个属性实际上是 contentInset 和 safeAreaInsets 在各个方向上的加和,即 contentInset+safeAreaInsets。contentInsetAdjustmentBehavior 是控制采取何种策略来控制调整边距的属性,默认为 UIScrollViewContentInsetAdjustmentAutomatic。在 iOS 11 之前,控制是否自动调整内边距的属性是 UIViewController 的 automaticallyAdjustsScrollViewInsets,但是这个属性现在已经废弃,取而代之的是 UIScrollView 的 contentInsetAdjustmentBehavior 。contentInsetAdjustmentBehavior 共有四种设置,如图 4 所示:


图 4 contentInsetAdjustmentBehavior


如果 UIScrollView 需要调整内容边距则加上安全区域的偏移,即 adjustedContentInset = contentInset+safeAreaInsets,如果不调整则 safeAreaInsets 不参与到计算中,即 adjustedContentInset = contentInset。简而言之,contentInsetAdjustmentBehavior 就是告诉 UIScrollView 在计算 adjustedContentInset 时要不要加上 safeAreaInsets。


3. UITableView


UITableView 除了继承自 UIScrollView 的特性外,还有自身 API 的变动。新系统中,UITableView 开启了估算行高,estimatedRowHeight、 estimatedSectionHeaderHeight、estimatedSectionFooterHeight 不再默认是 0,而是 UITableViewAutomaticDimension(这个值打印输出是 -1),这一举措旨在帮助开发者提高性能,减少 heightForRowAtIndexPath: 方法的的调用次数,但是这样会导致 API 执行顺序发生变化。在没有开启估算行高之前 tableView 总是先执行:



再执行




API 调用顺序如图 5 所示:


图 5 关闭预估高度方法执行顺序打印


而开启估算行高之后 tableView 会先执行:



再执行:



方法调用次数减少且调用顺序变为如图 6 所示:


图 6 开启预估高度方法执行顺序打印


由此可见:



的调用次数大大减少。但是如果开发者实现:



方法,那么无论是否关闭 estimatedRowHeight,API 的调用顺序和调用次数都是一样的,如图 7 所示。


图 7 实现预估高度方法后方法执行顺序打印


因此我们要注意新系统中 API 执行顺序和执行次数的变化。


除此之外我们还应该注意在开启预估高度tableView.estimatedSectionHeaderHeight = UITableViewAutomaticDimension; 的情况下,如果不实现



和



那么



和



是不会被执行的。


三、58 同城的实战经历


适配 iPhoneX 首先要添加一个 1125x2436 的启动图,否则会在屏幕的上方和下方留下两道黑框。在适配开始前先简单介绍下 58 同城 iOS 客户端的页面结构,因为页面结构不同可能遇到的问题会不尽相同。58 同城 iOS 客户端的 key window 的 rootViewController 是一个导航控制器,而不是 UITabBarController。导航控制器的 rootViewController 是一个 UITabBarController 样式(非 UITabBarController)的 ViewController。了解了应用的结构之后,下面介绍下 58 同城 iOS 客户端适配过程中遇到的比较典型的问题:


1. 首页


先看下适配之前的首页,如图 8 所示:


图 8 适配前首页图


适配前,首页主要存在的问题有 3 个:


  • 顶部的天气与状态栏有重叠;

  • 首页的动画默认已经进行了一部分;

  • 底部的 tabBar 在非安全区域内。


先看问题 1,产生问题 1 的原因是由于 iPhoneX 的状态栏高度产生了变化,由 20 变成了 44,天气组件的位置没有预留出新增的 24 点,导致与状态栏重叠。解决的办法是对顶部 view 进行重新布局约束,根据机型来判断是够需要增加 24 点。机型的判断由于没有真机验证,我们无法准确地获取到设备名称,因此暂时采用设备高度来判断机型。如果屏幕高度为 812,则暂时可以认为是 iPhoneX:



问题 2 的原因是 tableView 的安全区域的引起的。由于首页 tableView 的 contentInsetAdjustmentBehavior 默认为 UIScrollViewContentInsetAdjustmentAutomatic, 在隐藏导航栏的情况下 tableView 的内容偏移为安全区域的 44 点,因此 tableView 自动偏移了 44 点,看起来像动画进行了一半。解决方法是将 contentInsetAdjustmentBehavior 设置为 never 忽略安全区域偏移。


问题 3 的原因是 iPhoneX 新增了 34 点高度的虚拟 home 区域替代了 home 实体键。虚拟 home 区域并不是安全区域,因此需要在 iPhoneX 的机型上,屏幕底部预留出 34 点高度。


适配后首页在 iPhoneX 上的效果如图 9:


图 9 适配后首页图


2. 列表


在适配过程中,我们发现在二手物品列表,上拉加载数据时底部自定义的 tabBar 会来回反复地进行显示隐藏,tabBar 为下图蓝框内区域,如图 10 所示:


图 10 带有 tab 的列表图


经过排查我们发现 tableView 的 contentOffset 在有新的内容被添加进来的时候会产生跳动,如:不断上拉的一个列表,列表的 contentOffset 的 Y 值会不断增大,如果上拉过程中触发网络请求添加了新的内容到列表中,那么列表的 contentOffset 会产生一个跳动。如图 11 所示,在 contentOffset 的 Y 值为 9000 左右的时候列表新增了一页数据,导致 contentOffset 的 Y 值变为 3000 左右。


图 11 上拉加载更多时 scrollView 的偏移量 Y 值打印图


当下拉返回顶部时,contentOffset 的 Y 值会产生一系列不连续的跳动,如当前 contentOffset 的 Y 值为 3600,下拉后变为 3500 左右然后又变为 3600 左右,如图 12 打印所示:


图 12 下拉返回时 scrollView 的偏移量 Y 值打印图


如果利用 contentOffset 的 Y 值变化判断滑动方向的话,那么现在会判断为方向时而向上时而向下,导致底部的 tabBar 反复隐藏显示。


问题根本原因是由于



方法中获取 aScrollView 的偏移量会存在跳动的现象。具体的解决办法与各自的实现逻辑有较强的关联,在此不进行详细阐述。


3. IM


在使用 iOS11 beta 版时我们发现 IM 会话页的很多消息都变成了未识别消息类型,图 13 中左侧为适配前效果,右侧为适配后效果:


图 13 IM 会话页适配前后对比图


当消息滑出屏幕再滑回来时消息才被正确解析出来。最开始以为是 Xcode9 beta 版的 bug,因为只有 Xcode 9 打包安装的应用才会出现这种问题,而通过 Xcode8 正式版打包后安装到 iOS11 的手机上并不会出现这种问题。不过随着 beta 版的不断稳定,这种现象并没有随之消失,因此我们觉得有必要查看下消息不识别的具体原因。经过排查后我们发现,异常情况出现的原 l 因是由于 tableView 没有取到可重用的 cell,代码如图 14:


图 14 tableView 获取 Cell 的方法图


会话页将未取到 cell 作为一种异常情况进行了处理,处理方式是将这种情况当做未识别消息展示,处理逻辑如图 15 所示:


图 15 IM 会话列表异常处理代码


经过分析,取不到 cell 很有可能是因为 cell 没有被注册,而之前代码中注册 cell 的逻辑在



方法中。由于 iOS11 默认开启了 estimatedRowHeight,导致



方法先执行,



后执行,因此 cell 没有被注册成功,代码走进了异常处理逻辑。为了尽量不修改之前的业务逻辑,我们采用的适配方式的将估算高度关闭。


除此之外,IM 还存在适配安全区域的问题。未适配之前,IM 会话页面的输入框在 iPhoneX 的非安全区域内,见图 16 标注区域。


图 16 IM 会话页底部输入未适配前图


因此页面的底部需要设置 34 点的边距。iPhoneX 与其他手机很明显的不同就是键盘的高度,iPhoneX 的键盘高度为 333,这个键盘是从屏幕底部抬起并跨过了底部的虚拟 home 区域,键盘在安全区域内的高度为(333-34)。因此在监听键盘的事件中要注意对抬起高度的处理,以 IM 会话页为例,在非 iPhoneX 手机上输入框会上升 keyboardHeight 的高度,但是在 iPhoneX 上则只需要上升 keyboardHeight-34 点的高度。在 iPhoneX 手机上我们要格外注意键盘高度和安全区域结合带来的潜在问题。


4. 发布


在适配发布页面的时候,我们发现小区搜索页面的 titleView 在 iOS11 手机上变得很小,没有完全展开,效果如图 17 所示:


图 17 小区选择未适配前图


图 16 中的导航栏的 titleView 是 WBPUBSearchBar 类型的。由于自定义的 WBPUBSearchBar 是原来是通过 initWithFrame: 来创建并指明宽高的,WBPUBSearchBar 内部布局是依赖 Masonry 的,但是布局并没有设置 textFiled 和 button 的宽度,仅仅指明了 textFiled 和 button 各自的左右间距。在此情况下,自定义的 titleView 无法依赖内部子视图的约束得到正确的宽度,因此 titleView 的宽度并不正确。因此需要实现方法:



向外界提供自身的 size。当然除了实现 intrinsicContentSize 方法外也可以通过添加自身约束的方式来设置自身的正确合理的 size。


5. 视频


58 同城的二手房详情页支持视频展示房源,当全屏播放视频的时候会导致虚拟 home 条遮挡住视频内容,适配前视频全屏播放效果如图 18。


图 18 房源视频全屏播放图


由于在播放视频的时候有交互较少,苹果允许开发者在当前页面隐藏虚拟 home 条。因此可以在视频播放控制器中实现下述方法来隐藏虚拟 home 条:


  • 在适当时机刷新虚拟 home。



  • 实现 prefersHomeIndicatorAutoHidden 方法,返回是否需要隐藏虚拟 home。



当用户触碰屏幕时虚拟 home 会再次出现。这样就可以解决横屏虚拟 home 遮挡屏幕的问题。


6. 宠物


在使用 iOS11 beta 版时我们发现导航栏的自定义返回按钮距离屏幕左侧过远。这种情况只有在 Xcode9 编译时才会出现,Xcode8 编译打包在 iOS11 beta 的手机上运行并不会出现这种问题。对比导航栏的视图层级结构我们发现导航栏的层级做了很大的变动。


图 19 iOS 11 前导航栏层级结构和实际展示图


图 20 iOS11 导航栏层级结构和实际展示图


在 iOS11 下设置 UIBarButtonItem 时,系统新增了 _UINavigationBarContentView 和 _UIButtonBarStackView 两层 View,新增的两层 frame 是有偏移的,而且布局采用的是约束方式。因此需要遍历层级找到 _UIButtonBarStackView 这层视图并修改它与 _UINavigationBarContentView 间的约束,修改约束的时机放自定义导航控制器的在 viewDidLayoutSubviews 方法中。修改约束关键代码如图 21 所示:


图 21 修改约束关键代码


四、总结


总结一下,58 同城 iOS 客户端在适配过程中遇到了以下问题:


  1. 由于安全区域的引入,引起了 UIScrollView 的偏移。安全区域引起的 UIScrollView 偏移导致的问题非常多,文中仅仅以首页为例向大家展示了 58 同城的解决方式。当然,解决方式有很多种,只要了解问题的原因,那么解决方式可以根据自己的场景自由决定。文中没有提及 RN 和 web 的适配方式,主要原因是 RN 和 web 的适配方式与 Native 的适配方式类似,最主要的工作仍然是适配安全区域。


  2. tableView 的变化总体而言还是很大的,因此需要我们仔细观察现象排查代码。


  3. 对于导航栏的适配,我们应该注意 titleView 的内部约束,返回按钮的适配需要注意的是修改约束的时机。


  4. 键盘抬起本身并不会引起适配问题,但是涉及到安全区域的适配可能就会导致 UI 处理不正确。


  5. 开发者应该根据场景来控制虚拟 home 的显示和隐藏。


以上是 58 同城 iOS 客户端在适配过程中遇到的问题。当然,实际适配过程中遇到的问题远比文中描述的多,且情况要更为复杂。文中只是列出了一些比较典型的问题,希望对读者有所帮助。

H5页面WebView在iPhoneX的适配 1.  iPhoneX的介绍屏幕尺寸    我们熟知的iPhone系列开发尺寸概要如下:△ iPhone各机型的开发尺寸转化成我们熟知的像素尺寸:△ 每个机型的多维度尺寸倍图其实就是像素尺寸和开发尺寸的倍率关系,但这只是外在的表现。倍图核心的影响因素在于PPI(DPI),了解屏幕密度与各尺寸的关系有助于我们深度理解倍率的概念:《基础知识学起来!为设计师量身打造的DPI指南》iPhone8在本次升级... 阅读详情

相关推荐

iPhoneX 元件标注图.pdf

iPhoneX 元件标注图,维修技术人员必备,照片加注释,简单明了!

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

一、前言前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了。不得不说,新系统和新机型的发布确实是给 iOS 开发者带来了不小的工作量,因此有必要将 58 同城 iOS 客户端适配过程中遇到的问题跟大家分享一下。二、iOS 11 UIKit在适配 iOS 11 之前,我们首先要弄清楚 iOS 11

mobilehub 1405

后台扫描工具 - 御剑(珍藏版)附下载

版本说明:御剑后台扫描珍藏版 下载地址:安装包放下方网盘里了 链接:https://pan.baidu.com/s/1Bn7GtWb7AStcjzVahFOjSQ 提取码:zkaq 使用环境:windows 标题工具说明: 御剑后台扫描珍藏版是T00LS大牛的作品,方便查找用户后台登陆地址,同时也为程序开发人员增加了难度,尽量独特的后台目录结构。 附带很强大的字典,字典我们也是可以自己修改的,继续增加规则。 一、御剑后台扫描工具简介: 1、扫描线程自定义:用户可根据自身电脑的配置来设置调节扫描线程 2、

hackzkaq的博客 4万+

iOS判断当前设备是否为iPhone X系列

#define kDevice_Is_iPhoneX \ ({BOOL isPhoneX = NO;\ if (@available(iOS 11.0, *)) {\ isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\ }\ (isPhoneX);}) #define IPX_STATUSBAROFFSETHEIGHT ((kDevice_Is_iPhoneX.

u013712343的博客 1568

【计算机视觉学习03】全景图像拼接

文章目录一、基本原理1.1 图像拼接的几何原理1.2 直线,圆,复杂曲线方程拟合1.3 RANSAC算法1.4 APAP算法1.5 寻找最佳拼接缝(Seam Finding)1.5.1 最大流问题1.5.2 最大流问题的增广链算法1.5.3 最大流最小割定理二、 图像拼接具体实现2.1 代码2.2 运行结果 一、基本原理 将两幅或多幅具有重叠区域的图像,通过特征匹配将具有相同的特征点(SIFT特征点)的图像拼接在一起,将来自多个不同视角拍摄的图像变换到同一视角下,拼接成一张宽视野图像。 图像拼接基础流程

一个正在努力学习的iter 7787

单细胞分析实战:用R语言绘制带连线的堆叠柱状图(附完整代码)

本文详细介绍了如何使用R语言绘制带连线的堆叠柱状图进行单细胞转录组数据分析,特别适用于展示细胞比例变化趋势。通过完整代码示例和实战技巧,帮助研究者优化多组别比较的可视化效果,提升科研图表质量。

yhn4567890的博客 390

iOS 判断机型是否为iphonex

添加如下宏: #define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

祝我们都能在鸡零狗碎的生活里,找到自己的快乐~ 2万+

比亚迪璇玑架构:10ms级响应引领智能驾驶革命

比亚迪璇玑架构通过三大创新,实现10ms级控制响应时延,使AEB刹车距离比竞品缩短20米。

百态·数智思维 | 聚焦大数据、量化与未来AI 1256

iOS11/iPhoneX相关适配问题

相信大家已经被iPhoneX的刘海洗脑了,除了吐槽,留给我们的还有比较麻烦的适配工作。下面针对在整理过程中发现的适配注意点进行简单分享下。 适配: 1.iPhone X 尺寸 2.iPhone X 上下显示黑条问题 3.导航栏的适配 4.iOS11新增版本判断API 5.UITableView相关适配 6.安全区域的问题 7.上传...

守候可爱多的博客 5170

c#笔记之mes上传Http协议版

HTTP(超文本传输协议) 是一种典型的协议。

qq_61441787的博客 343

104、母线电容设计与选型

母线电容选型,容值不是最关键的,纹波电流和温度才是。很多炸机事故,不是容值不够,而是纹波电流超标导致过热。选电容时,多花点时间算纹波电流,比盲目加大容值有效得多。另外,别迷信进口品牌。国产电容(如江海、艾华)在常规应用里完全够用,价格只有进口的1/3。但高频特性确实有差距,所以高频去耦一定要用薄膜电容。最后,留个调试技巧:用示波器测母线电容两端的电压纹波,同时用电流探头测电容的纹波电流。如果纹波电流波形有尖峰,说明ESL太大,需要并联高频电容。如果纹波电压是低频波动,说明容值不够。

2401_88858637的博客 49

iOS 判断是否为iPhoneX以上设备

今年的Apple三款新手机已经发布,这三款手机的屏幕大小:     第一种适配的方法:[UIScreen mainScreen].bounds.size.width 或  [UIScreen mainScreen].bounds.size.height 判断,不过以后多了就不好用了。   第二种方法: // iPhone X以上设备iOS版本一定是11.0以上。     if (@...

XLaws的博客 1万+

20、自定义用户窗体:从创建到使用

本文详细介绍了在Excel VBA中创建和使用自定义用户窗体的完整过程,涵盖从窗体设计、控件添加与属性设置,到事件处理程序编写及宏调用的各个环节。通过实际示例讲解了如何实现文本大小写转换和员工信息录入等功能,并深入解析了常用控件的属性与事件机制。同时提供了控件命名规范、快捷键使用、布局技巧等实用建议,帮助读者构建高效、交互性强的VBA用户界面。

h0i1j2k3l的博客 131

ios iphonex适配

一、前言 iOS11发布也有一段时间了,每次版本升级,相关的适配工作当然是下个版本的核心工作之一。而且这次iOS11的更新,相对于iOS10的更新来说,改动点还是比较多的。除了iOS11系统的更新之外,iPhoneX刘海的打理工作也是必不可少。以前我们总是庆幸作为iOS开发者,不必像Android开发者需要考虑各种不同机型的适配问题。但是现在,随着iPhone各种历史版本的存在,各种花式的新版本...

王铁涛技术博客 1079

扩充两个三维体积:ITK实现

在医学图像处理中,经常需要进行 3D 体积的操作,比如合并、分割等。而 ITK (Insight Segmentation and Registration Toolkit) 是一个常用的开源库,可以用于实现各种医学图像处理算法。这篇文章将介绍如何使用 ITK 实现扩充两个三维体积的操作。不过以上代码已经足够简单明了地演示了如何使用 ITK 实现扩充两个三维体积的操作。首先,我们需要准备两个三维体积的数据。这里假设这两个体积大小相同,并且已经加载到内存中了。来读取和保存体积数据,使用了。

CodeVorter的博客 204

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

有关iOS11和iPhoneX的适配问题

http://www.jianshu.com/p/a4e778c2236e 一:iOS11 问题 有关iOS11 ,最大的变化就是增加了一个安全区域(safeArea)的概念,iOS11 适配的大部分问题都是由于它引起的。 如果还不太了解概念,推荐阅读 iOS 11 安全区域适配总结这篇文章。 1. tableView 头部视图和尾部视图出现一块留白问题 iOS11下tablev

3815

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

我的iOS11及iPhoneX适配(一)

我做的项目,在更新xcode到9.0,sdk版本是iOS11,如果不适配,暂时发现以下问题: 1. 2 3 4 5

md16888的博客 1304

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

适配iphonex和ios11的相关问题总结

还没有开始适配之前,就已经听身边的程序猿伙伴在为iPhone X的刘海和HomeBar的存在而纷纷吐槽了。说的我都有些怕怕,胆子小,哈哈哈。下面针对在整理过程中发现的适配注意点进行简单总结。 一、iOS11 1、iOS11新增版本判断API 2、MJRefresh上拉刷新死循环 3、访问相册权限变更 4、UI

兵仔贾---的专栏 962

iOS 有关iOS11和iPhoneX的适配问题

一:iOS11 问题 有关iOS11 ,最大的变化就是增加了一个安全区域(safeArea)的概念,iOS11 适配的大部分问题都是由于它引起的。 如果还不太了解概念,推荐阅读 iOS 11 安全区域适配总结这篇文章。 1. tableView 头部视图和尾部视图出现一块留白问题 iOS11下tableview默认开启了self-Sizing,也就是自动估高机制。 有两种办法去掉留白:...

XLaws的博客 528

iOS调试——适配iOS11,iPhoneX问题及解决办法

iPhoneX: 问题 1.app上下各有空间,未全屏 解决办法:UI给新图后,新增 launchimg启动图 。图片尺寸:1125 * 2436 2.问题:使用MJRefresh,下拉刷新UI错误 解决办法: 方法一:如果多个页面用tableview,建议使用 baseTableView,继承。baseTableView实现下列方法 OC: if (@

吹泡泡的星星 2874

iOS 11 & iPhone X 适配总结

前言 随着iPhone 8、iPhone X和iOS 11的到来,我们可以制作出比以往体验更加优秀的APP,适配也随之而来。下面我们介绍下一些新特性! 参考文章 这里总结了大家iOS 11,iPhone X 适配问题.如有问题,欢迎大家讨论. iOS 11 新特性及适配要求 AR增强现实 新特性简介:在iOS 11中,开发者可以使用ARKit开发出强大的AR应用,配合苹果强大的A系列处理器,用户可以在iPhone等终端设备上体验到强大的AR效果,可无缝融合虚拟对象与真实世界,提供浸入感十足的愉悦体验

sgliquangang的专栏 1716

iOS 11 IPhoneX 适配不得不说的一些事儿

iOS 11 IPhoneX 适配不得不说的一些事儿

TonyDarkGodness的博客 1085

IOS iPhoneX适配以及常用适配属性和自定义导航栏配置

背景: 《iPhone X 官方人机交互指南中文版》 《iPhone X适配没那么复杂,但也不是看上去这么简单》 《取消了Home键的 iPhone X,交互方式都有哪些变化?》 关键属性: ios 11之后原来automaticallyAdjustsScrollViewInsets属性无效,修改为 @available(iOS 11.0, *) public enum...

Steve_Abelieve 2583

iOS iPhoneX 适配

问题一:适配1.首先简单定义一下IPoneX#define ISIPHONEX (ScreenHeight == 812.0f) ? YES : NO2.简单了解下IPhoneX 导航栏 状态栏 tabar高度1.导航栏高度 88 非非IPoneX手机为642.状态栏高度44 非IPoneX手机为203.tabar高度83 非IPhoneX手机为49  如下图所示;3.定义其高度#define H...

H.A.N的博客 2280

iOS开发-iPhoneX的适配-iPhoneX屏幕适配分享

iOS 11正式发布,原本bate版就很多坑,现在还没解决就正式发布了~内心也是酸爽的。除了代码上的坑,更恶劣的就是新的iPhone咯,看到iPhone8和8P的时候内心还算不错的,不过iPhone X就…一个大刘海,适配太坑所以今天就来说说这个iPhone X大刘海的事,最近在各个群里都是遇到了很多问题,我大体总结了这4个: navigation.title上面加一个segment,然后这个se...

qq_41959835的博客 3925

CSS 适配 iPhoneX 全面屏

CSS 网页适配 iPhoneX,就是这么简单 展开 前言 iPhoneX 取消了物理按键,改成底部小黑条,这一改动导致网页出现了比较尴尬的屏幕适配问题。对于网页而言,顶部(刘海部位)的适配问题浏览器已经做了处理,所以我们只需要关注底部与小黑条的适配问题即可(即常见的吸底导航、返回顶部等各种相对底部 fixed 定位的元素)。 笔者通过查阅了一些官方文档,以及结合实际项目中的一些处理经验,整理了一套简单的适配方案分享给大家,希望对大家有所帮助,以下是处理前后效果图: 适配之前需要了解的几个新知识 安全区域

dlf_0610的博客 3102
上一篇: iOS11 打开系统相册 导航栏透明 且列表的frame也不对
下一篇: iWatch开发的真机调试适配攻略
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值