iOS11及iPhone X适配

1,新增框架

Core ML & Vision: 集成机器学习的

DeviceCheck - 每天要用广告 ID 追踪用户的开发者现在有了更好地选择 (当然前提是用来做正经事儿)。DeviceCheck 允许你通过你的服务器与 Apple 服务器通讯,并为单个设备设置两个 bit 的数据。简单说,你在设备上用 DeviceCheck API 生成一个 token,然后将这个 token 发给自己的服务器,再由自己的服务器与 Apple 的 API 进行通讯,来更新或者查询该设备的值。这两个 bit 的数据用来追踪用户比如是否已经领取奖励这类信息。
ARKit: 用来创建增强现实 (AR) 应 用的 。ARKit 虽然是 iOS11 新出的框架,但并不是所有的 iOS11 系统都可以使用,而是必须要是处理器 A9 及以上才能够使用,苹果从 iPhone 6S 开始使用 A9 处理器,也就是 iPhone 6 及以前的机型无法使用 ARKit。

PDFKit: iOS 11 后苹果在 iOS 平台开放了 PDFKit SDK,这是一个在 MacOS 上已经长期存在的框架,但却在 iOS 上姗姗来迟。可以使用这个框架显示和操作 pdf 文件,你可以使用 PDFKit 实现显示 pdf 文档、显示缩略图、展开大纲和搜索文字等功能。

IdentityLookup: 可以自己开发一个 App Extension 来拦截系统 SMS 和 MMS 的信息。系统的信息 App 在接到未知的人的短信时,会询问所有开启的过滤扩展,如果扩展表示该消息应当被拦截,那么这则信息将不会传递给你。

可用性:
一些运营商或者辅助性质的 App 可能会使用到这个功能。

Core NFC: NFC(Near Field Communication)即近距离无线通讯技术。Core NFC 主要用于检测 NFC 标签, 并且读取其中包含的 NDEF 数据。

要注意的是:
只能同时开启一个 session
App 需要在前台,退入后台失效
session 最多存活60秒,超时必须重启新 session
需要配置 info.plist,开启 NFC 读取权限
仅支持 iPhone 7 和 7P 以上包含 NFC 模块的机型

可用性:
首先,你需要有 NFC 设备。有设备的可以考虑,没设备的也不可能为了引入新功能硬着头皮去做 NFC。

拖拽 - 很标准的一套 iOS API,不出意外地,iOS 系统帮助我们处理了绝大部分工作,开发者几乎只需要处理结果。UITextView 和 UITextField 原生支持拖拽,UICollectionView 和 UITableView 的拖拽有一系列专用的 delegate 来表明拖拽的发生和结束。而你也可以对任意 UIView 子类定义拖拽行为。和 mac 上的拖拽不同,iOS 的拖拽充分尊重了多点触控的屏幕,所以可能你需要对一次多个的拖拽行为做些特别处理。

Auto Fill - 从 iCloud Keychain 中获取密码,然后自动填充的功能现在开放给第三方开发者了。UITextInputTraits 的 textContentType 中添加了 username 和 password,对适合的 text view 或者 text field 的 content type 进行配置,并填写 Info.plist 的相关内容,就可以在要求输入用户名密码时获取键盘上方的自动填充,帮助用户快速登录。

FileProvider 和 FileProviderUI - 提供一套类似 Files app 的界面,让你可以获取用户设备上或者云端的文件。相信会成为以后文档相关类 app 的标配。

2,安全区域safeArea

SafeArea、
contentInsetAdjustmentBehavior、
adjustedContentInset

可以参考文章:
https://mp.weixin.qq.com/s/W1_0VrchCO50owhJNmJnuQ

iOS11中automaticallyAdjustsScrollViewInsets被废弃了,scrollView可能会偏离,解决办法

// 判断系统版本,系统API(这个是Xcode报警提示fix发现的??)
if (@available(iOS 11.0, *)) {
} else {
        // Fallback on earlier versions
}

3:UInavigatonBar新增大标题模式;默认不开启prefersLargeTitles(Bool)、titleView支持autolayout

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

导航大title模式,可以滑动变小
iOS11及iPhone X适配_第1张图片iOS11及iPhone X适配_第2张图片

2、titleView支持autolayout,这要求titleView必须是能够自撑开的或实现了- intrinsicContentSize,
解决办法比较简单,这个搜索框对应的view实现-intrinsicContentSize方法

- (CGSize)intrinsicContentSize {
    return UILayoutFittingExpandedSize;
}

4,tableView的sectionHeader、sectionFooter问题

tableView的sectionHeader、sectionFooter高度与设置不符,因为tableView的estimatedRowHeight、estimatedSectionHeaderHeight、 estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension。最简单的方法就是直接设置为0。

5,ScrollView偏移问题

因为iOS11automaticallyAdjustsScrollViewInsets废除了,列表/页面偏移单独可以这么解决:

if (@available(iOS 11.0, *)){
        _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    }

目前发现所有的Scrollview 及其子类都需要设置 contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever ,工程中大量使用列表的同学不要慌,不要忙,因为UIView及其子类都遵循UIAppearance协议,我们可以进行全局配置:

// AppDelegate 进行全局设置
    if (@available(iOS 11.0, *)){
        [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
    }

这样一来使用UITableview 、UICollectionView、UIScrollview的时候就不需要再单独设置该属性了。

6,Named Color

现在你可以在 xcassets 里添加颜色,然后在代码或者 IB 中引用这个颜色了。大概是这样的:
iOS11及iPhone X适配_第3张图片

7,适配网页加载不全下面有白边

if#available(iOS11.0, *) {
  webView.scrollView.contentInsetAdjustmentBehavior= .never
} else {
}

8,iPhone X适配注意点

1,在iPhone X上面状态栏高度,底部区域高度的变化
iOS11及iPhone X适配_第4张图片
首先iPhone X高度是812,宽度跟iphone6一样

#define SLBNavBarHeight               44.f
#define SLBStatusBarHeight            (ISIPHONEX ? 44.f : 20.f)
#define SLBNavAndStatusHeight         (ISIPHONEX ? 88.f : 64.f)

#define SLBTabBarHeight               49.f
#define SLBTabBarBottomHeight         (ISIPHONEX ? 34.f : 0.f)
#define SLBTabBarAndBottomHeight      (ISIPHONEX ? 49.f+34.f : 49.f)

//iPhoneX
#define ISIPHONEX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

2: iPhone X 上运行有黑色区域问题

启动图问题,使用LaunchScreen来当做入场页 或者 修改Assets中的LaunchImage,添加iPhoneX的Launch图1125*2436(竖屏),注意这边的图片像素必须按要求来

3: FaceID & TouchID

注意,iPhone X 支持 FaceID 进行身份验证,但不支持 TouchID验证。注意做好机型的区分,请勿在 iPhone X 上使用 TouchID,也请勿在其他设备上使用 FaceID。

4:iPhone X 侧边按钮的使用方式:
按一下锁屏;
按两下 Apple Pay;
按三下辅助功能快捷键(比如 VoiceOver);
按五下 SOS;
短按 Siri;
长按关机;
按一下+Volume Up 截屏。

9, xcode9打包注意事项

xcode9打包版本只能是8.2及以下版本,或者9.0及更高版本
xcode9不支持8.3和8.4版本
xcode9新打包要在构建版本的时候加入1024*1024 AppSore icon

    • 1新增框架
    • 2安全区域safeArea
    • 3UInavigatonBar新增大标题模式默认不开启prefersLargeTitlesBooltitleView支持autolayout
    • 4tableView的sectionHeadersectionFooter问题
    • 5ScrollView偏移问题
    • 6Named Color
    • 7适配网页加载不全下面有白边
    • 8iPhone X适配注意点
    • 9 xcode9打包注意事项

你可能感兴趣的:(NSTimer,ios,iphone,iOS11,iPhone-X)