ios10 新技能Get,必看
来源:互联网 发布:js屏蔽手机运营商广告 编辑:程序博客网 时间:2024/06/01 08:46
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
1.首先是版本适配的问题
[[[[UIDevice currentDevice] systemVersion]substringToIndex:1] intValue] <=10,此方法不能再作为判断系统版本的方法,因为在iOS10中“substringToIndex:1”会被一直检测为iOS1
解决办法:OC
使用[[[UIDevice currentDevice] systemVersion] compare:@"10"options:NSNumericSearch] == NSOrderedDescending来判断,其中决定你要判断的条件有两个,“compare”:决定要判断的版本,"NSOrderedSame、NSOrderedDescending、NSOrderedAscending"等等决定你是升序还是降序判断
解决办法:Swift
ifNSProcessInfo().isOperatingSystemAtLeastVersion(NSOperatingSystemVersion(majorVersion:10,minorVersion:0,patchVersion:0)){ 里面是条件成立后的代码块 }。
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
2.UITabBarController 中的改进
在iOS 10之前,tabBarItem上的文字颜色,默认是 蓝色,上面的新消息提醒数字badge默认是红色的,未选中的TabBarItem的文字颜色默认是黑色的,我们修改的话,也只能修改它的默认颜色,其它的就不能进行个性化定制,使用起来非常的不方便,iOS10之后我们可以轻松个性化定制了。
3.隐私数据访问问题:
你的项目中访问了隐私数据,比如:相机,相册,联系人等,在Xcode8中打开编译的话,统统会crash.这是因为iOS对用户的安全和隐私的增强,在申请很多私有权限的时候都需要添加描述,但是,在使用Xcode8之前的Xcode还是使用系统的权限通知框.
要想解决这个问题,只需要在info.plist添加NSContactsUsageDescription的key,value自己随意填写就可以,这里列举出对应的key(Source Code模式下):
NSPhotoLibraryUsageDescription
App需要您的同意,才能访问相册
NSCameraUsageDescription
App需要您的同意,才能访问相机
NSMicrophoneUsageDescription ios10 新技能Get,必看
App需要您的同意,才能访问麦克风
NSLocationUsageDescription
App需要您的同意,才能访问位置
NSLocationWhenInUseUsageDescription
App需要您的同意,才能在使用期间访问位置
NSLocationAlwaysUsageDescription
App需要您的同意,才能始终访问位置
NSCalendarsUsageDescription
App需要您的同意,才能访问日历
NSRemindersUsageDescription
App需要您的同意,才能访问提醒事项
NSMotionUsageDescription App需要您的同意,才能访问运动与健身
NSHealthUpdateUsageDescription
App需要您的同意,才能访问健康更新
NSHealthShareUsageDescription
App需要您的同意,才能访问健康分享
NSBluetoothPeripheralUsageDescription
App需要您的同意,才能访问蓝牙
NSAppleMusicUsageDescription
App需要您的同意,才能访问媒体资料库
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
4.UIColor的问题
官方文档中说:大多数core开头的图形框架和AVFoundation都提高了对扩展像素和宽色域色彩空间的支持.通过图形堆栈扩展这种方式比以往支持广色域的显示设备更加容易。现在对UIKit扩展可以在sRGB的色彩空间下工作,性能更好,也可以在更广泛的色域来搭配sRGB颜色.如果你的项目中是通过低级别的api自己实现图形处理的,建议使用sRGB,也就是说在项目中使用了RGB转化颜色的建议转换为使用sRGB,在UIColor类中新增了两个api:
- (UIColor*)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)greenblue:(CGFloat)blue alpha:(CGFloat)alphaNS_AVAILABLE_IOS(10_0);
+ (UIColor*)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)greenblue:(CGFloat)blue alpha:(CGFloat)alphaNS_AVAILABLE_IOS(10_0);
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
5.UICollectionViewCell的的优化
在iOS 10之前,UICollectionView上面如果有大量cell,当用户活动很快的时候,整个UICollectionView的卡顿会很明显,为什么会造成这样的问题,这里涉及到了iOS系统的重用机制,当cell准备加载进屏幕的时候,整个cell都已经加载完成,等待在屏幕外面了,也就是整整一行cell都已经加载完毕,这就是造成卡顿的主要原因,专业术语叫做:掉帧.
要想让用户感觉不到卡顿,我们的app必须帧率达到60帧/秒,也就是说每帧16毫秒要刷新一次.
iOS 10 之前UICollectionViewCell的生命周期是这样的:
1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse方法,在这个方法里面,可以重置cell的状态,加载新的数据;
2.继续滑动,就会调用cellForItemAtIndexPath方法,在这个方法里面给cell赋值模型,然后返回给系统;
3.当cell马上进去屏幕的时候,就会调用willDisplayCell方法,在这个方法里面我们还可以修改cell,为进入屏幕做最后的准备工作;
4.执行完willDisplayCell方法后,cell就进去屏幕了.当cell完全离开屏幕以后,会调用didEndDisplayingCell方法.
iOS 10 UICollectionViewCell的生命周期是这样的:
1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse方法,在这里当cell还没有进去屏幕的时候,就已经提前调用这个方法了,对比之前的区别是之前是cell的上边缘马上进去屏幕的时候就会调用该方法,而iOS10 提前到cell还在屏幕外面的时候就调用;
2.在cellForItemAtIndexPath中创建cell,填充数据,刷新状态等操作,相比于之前也提前了;
3.用户继续滑动的话,当cell马上就需要显示的时候我们再调用willDisplayCell方法,原则就是:何时需要显示,何时再去调用willDisplayCell方法;
4.当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 *)collectionViewprefetchItemsAtIndexPaths:(NSArray *)indexPathsNS_AVAILABLE_IOS(10_0);
-(void)collectionView:(UICollectionView *)collectionViewcancelPrefetchingForItemsAtIndexPaths:(NSArray *)indexPathsNS_AVAILABLE_IOS(10_0);
在ColletionView prefetchItemsAtindexPaths这个方法是异步预加载数据的,当中的indexPaths数组是有序的,就是item接收数据的顺序;
CollectionView cancelPrefetcingForItemsAtindexPaths这个方法是可选的,可以用来处理在滑动中取消或者降低提前加载数据的优先级.
注意:这个协议并不能代替之前读取数据的方法,仅仅是辅助加载数据.
Pre-Fetching预加载对UITableViewCell同样适用.
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
6.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;
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
7.UIApplication对象中openUrl被废弃
在iOS10.0以前的年代,我们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplicationsharedApplication] openURL 方法就可以了,但是在iOS 10已经被废弃了,因为使用这种方式,处理的结果我们不能拦截到也不能获取到,对于开发是非常不利的,在iOS10全新的退出了 [[UIApplication sharedApplication]openURL:nil options:nil completionHandler:nil];有一个成功的回调block可以进行监视。
8.非常非常重要,第三方键盘一直都不能很方便的拥有长按地球键的功能,现在有了。通过handleInputModeListFromView:withEvent: 可以弹出系统键盘列表。同时使用documentInputMode 可以检测输入上下文中的语言,你可以对输入方式进行一些类似于对齐方式的调整。
9.CoreData提升了并发访问性能
10. 继2014年苹果推出VoIP证书后,这次VoIP 接口的开放,以及一个全新的 AppExtension,简直是VOIP的福音,可见苹果对VOIP的重视。callkit框架VoIP应用程序集成与iPhone的用户界面,给用户一个很棒的经历。用这个框架来让用户查看和接听电话的锁屏和VoIP管理联系人电话在手机APP的收藏夹和历史的观点。
callkit还介绍了应用程序的扩展,使呼叫阻塞和来电识别。您可以创建一个应用程序扩展,可以将一个电话号码与一个名称联系起来,或者告诉系统当一个号码应该被阻止。
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
1.首先是版本适配的问题
解决办法:OC
解决办法:Swift
ifNSProcessInfo().isOperatingSystemAtLeast
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
3.隐私数据访问问题:
你的项目中访问了隐私数据,比如:相机,相册,联系人等,在Xcode8中打开编译的话,统统会crash.这是因为iOS对用户的安全和隐私的增强,在申请很多私有权限的时候都需要添加描述,但是,在使用Xcode8之前的Xcode还是使用系统的权限通知框.
要想解决这个问题,只需要在info.plist添加NSContactsUsageDescripti
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
4.UIColor的问题
官方文档中说:大多数core开头的图形框架和AVFoundation都提高了对扩展像素和宽色域色彩空间的支持.通过图形堆栈扩展这种方式比以往支持广色域的显示设备更加容易。现在对UIKit扩展可以在sRGB的色彩空间下工作,性能更好,也可以在更广泛的色域来搭配sRGB颜色.如果你的项目中是通过低级别的api自己实现图形处理的,建议使用sRGB,也就是说在项目中使用了RGB转化颜色的建议转换为使用sRGB,在UIColor类中新增了两个api:
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
5.UICollectionViewCell的的优化
在iOS 10之前,UICollectionView上面如果有大量cell,当用户活动很快的时候,整个UICollectionView的卡顿会很明显,为什么会造成这样的问题,这里涉及到了iOS系统的重用机制,当cell准备加载进屏幕的时候,整个cell都已经加载完成,等待在屏幕外面了,也就是整整一行cell都已经加载完毕,这就是造成卡顿的主要原因,专业术语叫做:掉帧.
要想让用户感觉不到卡顿,我们的app必须帧率达到60帧/秒,也就是说每帧16毫秒要刷新一次.
iOS 10 之前UICollectionViewCell的生命周期是这样的:
iOS 10 UICollectionViewCell的生命周期是这样的:
在ColletionView prefetchItemsAtindexPaths这个方法是异步预加载数据的,当中的indexPaths数组是有序的,就是item接收数据的顺序;
CollectionView cancelPrefetcingForItems
注意:这个协议并不能代替之前读取数据的方法,仅仅是辅助加载数据.
Pre-Fetching预加载对UITableViewCell同样适用.
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
6.UIRefreshControl的使用
在iOS 10 中,UIRefreshControl可以直接在UICollectionView和UITableView中使用,并且脱离了UITableViewController.现在RefreshControl是UIScrollView的一个属性.
使用方法:
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
7.UIApplication对象中openUrl被废弃
8.非常非常重要,第三方键盘一直都不能很方便的拥有长按地球键的功能,现在有了。通过handleInputModeListFromV
9.CoreData提升了并发访问性能
10. 继2014年苹果推出VoIP证书后,这次VoIP 接口的开放,以及一个全新的 AppExtension,简直是VOIP的福音,可见苹果对VOIP的重视。callkit框架VoIP应用程序集成与iPhone的用户界面,给用户一个很棒的经历。用这个框架来让用户查看和接听电话的锁屏和VoIP管理联系人电话在手机APP的收藏夹和历史的观点。
callkit还介绍了应用程序的扩展,使呼叫阻塞和来电识别。您可以创建一个应用程序扩展,可以将一个电话号码与一个名称联系起来,或者告诉系统当一个号码应该被阻止。
-----------------------------------------------------------------------------------------------------------
iOS10的新技能,必看。喜欢的话,关注微博哦。
-----------------------------------------------------------------------------------------------------------
0 0
- ios10 新技能Get,必看
- iOS10推送必看
- iOS10推送必看UNNotificationServiceExtension
- iOS10推送必看UNNotificationServiceExtension
- iOS10推送必看UNNotificationServiceExtension
- 新技能get
- 新技能get
- Get新技能
- iOS10 推送必看(基础篇)
- iOS10 推送必看(基础篇)
- iOS10推送必看(高阶1)
- iOS10 推送必看(基础篇)
- iOS10推送必看UNNotificationAttachment以及UNTimeIntervalNotificationTrigger
- iOS开发 iOS10推送必看
- iOS开发 iOS10推送必看(基础篇)
- iOS开发 iOS10推送必看(基础篇)
- iOS开发 iOS10推送必看(基础篇)
- iOS开发 iOS10推送必看(基础篇)
- 关于jsonp的一些事!!!
- 扩大Button按钮的点击区域
- 自定义弹出窗AlertView
- AFNetworking的封装 项目使用
- 常用的PCH文件
- ios10 新技能Get,必看
- Playground -swift01基础学习
- iOS设备类型
- 以下面试题来自于百度、小米、乐视…
- iOS开发之2016年9月App上架App&nbs…
- iOS_UITextFiled控件详解
- 九宫格
- DDLog使用
- ios 自定义加载动画的实现,类…