iOS10适配和Xcode8配置问题和解决方案

iOS10的适配和Xcode8配置,勤劳的程序猴子总得去整理这些个东西,都是泪,都是泪,都是泪啊。

Xcode8控制台打印

升级Xcode8.0之后运行项目,控制台疯狂打印了一堆堆瞎吧东西。想要直接去掉也好说,解决:

在Product - Scheme - Edit Scheme 下的Run -> Arguments -> Environment Variables 添加 OS_ACTIVITY_MODE = disable

注:单个程序加这参数,只针对这一个程序。

URL Schemes跳转系统设置


比如点击跳转到地理定位的开启设置里:(比如 WiFi、蜂窝数据、定位等)

注:iOS10以后,prefs:root开头的Scheme无法跳转到系统设置里了。

UIRefreshControl的使用

在iOS 10 中, UIRefreshControl可以直接在UICollectionView和UITableView中使用,并且脱离了UITableViewController.现在RefreshControl是UIScrollView的一个属性. 使用方法:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];

[refreshControl addTarget:self action:@selector(loadData) forControlEvents:UIControlEventValueChanged];

collectionView.refreshControl = refreshControl;

UIApplication对象中openUrl被废弃

在iOS 10以前,我们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication sharedApplication] openURL 方法就可以了。

 但是在iOS 10 已经被废弃了,因为使用这种方式,处理的结果我们不能拦截到也不能获取到,对于开发是非常不利的,在iOS 10全新的推出了 [[UIApplication sharedApplication] openURL:nil options:nil completionHandler:nil];有一个成功的回调block 可以进行监视,注:有警告。

注释快捷键command+/失效

因为苹果解决xcode ghost,把插件屏蔽了,Xcode8.0的注释// 生成快捷键 command+/失效了

解决办法:

终端运行命令:sudo /usr/libexec/xpccachectl

Password:输入开机密码

重启Mac生效

生效后空行快捷键,只在代码行能产生/解除注释,空行不能产生注释。

注意:Xcode8内置了开启注释的功能,位置在这里

快捷键的设置在这里

Xcode8取消了三方插件的功能,具体可以查阅下Xcode8 Source Editor

自动签名和手动签名

IOS10加入自动签名,Xcode8.0加入Automatically Manage Signing。

在此借用study_sea大大的文章(自动和手动签名说明)。

Xcode8开发iOS10推送

项目中有推送的话,需要开启Push Notifications。

其他的推送通知过程借用zhao0大大的文章(iOS10推送通知过程

Xib文件的变更

使用XCode8打开xib文件后,会出现下图的提示。

大家选择Choose Device即可。

布局已经乱了,需要更新一下frame即可。如下图

注意:如果按上面的步骤操作后,在用Xcode7打开Xib会报一下错误,

解决办法:需要删除Xib里面

这句话,以及把< document >中的toolsVersion和< plugIn >中的version改成你正常的xib文件中的值。

权限配置

随着人们对隐私保护的注重,似乎苹果的每一代产品都有相应的体现——更为严格的设备和数据访问权限控制。

在iOS10中,如果你的App想要访问用户的相机、相册、麦克风、通讯录等等权限,都需要进行相关的配置,不然会直接crash。

你需要在info.plist中添加你App需要的一些设备权限。

首先找到info,可以直接在这里添加键值对:



一些常用的权限配置选项:

// 相机NSCameraUsageDescriptionApp需要您的同意,才能访问相册

// 相册NSPhotoLibraryUsageDescriptionApp需要您的同意,才能访问相机

// 麦克风:NSMicrophoneUsageDescriptionApp需要您的同意,才能访问麦克风

// 通信录NSContactsUsageDescriptionApp需要您的同意,才能访问通信录

其它权限配置选项:

// 位置NSLocationUsageDescriptionApp需要您的同意,才能访问位置

// 在使用期间访问位置NSLocationWhenInUseUsageDescriptionApp需要您的同意,才能在使用期间访问位置

// 始终访问位置NSLocationAlwaysUsageDescriptionApp需要您的同意,才能始终访问位置

// 日历NSCalendarsUsageDescriptionApp需要您的同意,才能访问日历

// 提醒事项NSRemindersUsageDescriptionApp需要您的同意,才能访问提醒事项

// 运动与健身NSMotionUsageDescriptionApp需要您的同意,才能访问运动与健身

// 健康更新NSHealthUpdateUsageDescriptionApp需要您的同意,才能访问健康更新

// 健康分享NSHealthShareUsageDescriptionApp需要您的同意,才能访问健康分享

// 蓝牙NSBluetoothPeripheralUsageDescriptionApp需要您的同意,才能访问蓝牙

// 媒体资料库NSAppleMusicUsageDescriptionApp需要您的同意,才能访问媒体资料库

UICollectionViewCell的的优化

在iOS 10 之前,UICollectionView上面如果有大量cell,当用户活动很快的时候,整个UICollectionView的卡顿会很明显,为什么会造成这样的问题,这里涉及到了iOS 系统的重用机制,当cell准备加载进屏幕的时候,整个cell都已经加载完成,等待在屏幕外面了,也就是整整一行cell都已经加载完毕,这就是造成卡顿的主要原因,专业术语叫做:掉帧.

要想让用户感觉不到卡顿,我们的app必须帧率达到60帧/秒,也就是说每帧16毫秒要刷新一次.

iOS 10 之前UICollectionViewCell的生命周期是这样的:

用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse方法,在这个方法里面,可以重置cell的状态,加载新的数据;

继续滑动,就会调用cellForItemAtIndexPath方法,在这个方法里面给cell赋值模型,然后返回给系统;

当cell马上进去屏幕的时候,就会调用willDisplayCell方法,在这个方法里面我们还可以修改cell,为进入屏幕做最后的准备工作;

执行完willDisplayCell方法后,cell就进去屏幕了.当cell完全离开屏幕以后,会调用didEndDisplayingCell方法.

iOS 10 UICollectionViewCell的生命周期是这样的:

用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse方法,在这里当cell还没有进去屏幕的时候,就已经提前调用这个方法了,对比之前的区别是之前是cell的上边缘马上进去屏幕的时候就会调用该方法,而iOS 10 提前到cell还在屏幕外面的时候就调用;

在cellForItemAtIndexPath中创建cell,填充数据,刷新状态等操作,相比于之前也提前了;

用户继续滑动的话,当cell马上就需要显示的时候我们再调用willDisplayCell方法,原则就是:何时需要显示,何时再去调用willDisplayCell方法;

当cell完全离开屏幕以后,会调用didEndDisplayingCell方法,跟之前一样,cell会进入重用队列.

在iOS 10 之前,cell只能从重用队列里面取出,再走一遍生命周期,并调用cellForItemAtIndexPath创建或者生成一个cell.

在iOS 10 中,系统会cell保存一段时间,也就是说当用户把cell滑出屏幕以后,如果又滑动回来,cell不用再走一遍生命周期了,只需要调用willDisplayCell方法就可以重新出现在屏幕中了.

iOS 10 中,系统是一个一个加载cell的,二以前是一行一行加载的,这样就可以提升很多性能;

iOS 10 新增加的Pre-Fetching预加载

这个是为了降低UICollectionViewCell在加载的时候所花费的时间,在 iOS 10 中,除了数据源协议和代理协议外,新增加了一个UICollectionViewDataSourcePrefetching协议,这 个协议里面定义了两个方法:

- (void)collectionView:(UICollectionView*)collectionView prefetchItemsAtIndexPaths:(NSArray *)indexPathsNS_AVAILABLE_IOS(10_0);- (void)collectionView:(UICollectionView*)collectionView cancelPrefetchingForItemsAtIndexPaths:(NSArray *)indexPathsNS_AVAILABLE_IOS(10_0);

在ColletionView prefetchItemsAt indexPaths这个方法是异步预加载数据的,当中的indexPaths数组是有序的,就是item接收数据的顺序;

CollectionView cancelPrefetcingForItemsAt indexPaths这个方法是可选的,可以用来处理在滑动中取消或者降低提前加载数据的优先级.

注意:这个协议并不能代替之前读取数据的方法,仅仅是辅助加载数据.

Pre-Fetching预加载对UITableViewCell同样适用.

xib布局注意

ios10上UICollectionView的这个代理,在10以下会崩溃,大家用xib别点。


由于10的适配,这种小的在10上显示正常,以下显示不全,建议多给点坐标。

参考:iOS 10 适配知识点总结 

           iOS10升级后的一些问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容