iOS 核心动画的图像IO

iOS 核心动画的图像IO

ID:37955639

大小:263.02 KB

页数:28页

时间:2019-06-03

iOS 核心动画的图像IO_第1页
iOS 核心动画的图像IO_第2页
iOS 核心动画的图像IO_第3页
iOS 核心动画的图像IO_第4页
iOS 核心动画的图像IO_第5页
资源描述:

《iOS 核心动画的图像IO》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、iOS核⼼动画的图像IO潜伏期值得-凯思文考帕萨特在第13章“高效绘图”中,我们研究了和CoreGraphics绘图相关的性能问题,以及如何修复。和绘图性能相关紧密相关的是图像性能。在这一章中,我们将研究如何优化从闪存驱动器或者网络中加载和显示图片。加载和潜伏绘图实际消耗的时间通常并不是影响性能的因素。图片消耗很大一部分内存,而且不太可能把需要显示的图片都保留在内存中,所以需要在应用运行的时候周期性地加载和卸载图片。图片文件加载的速度被CPU和IO(输入/输出)同时影响。iOS设备中的闪存已经比传统硬盘快很多了,但仍然比RAM慢将近200倍左右,这就需要很小心地管理加载,来

2、避免延迟。只要有可能,试着在程序生命周期不易察觉的时候来加载图片,例如启动,或者在屏幕切换的过程中。按下按钮和按钮响应事件之间最大的延迟大概是200ms,这比动画每一帧切换的16ms小得多。你可以在程序首次启动的时候加载图片,但是如果20秒内无法启动程序的话,iOS检测计时器就会终止你的应用(而且如果启动大于2,3秒的话用户就会抱怨了)。有些时候,提前加载所有的东西并不明智。比如说包含上千张图片的图片传送带:用户希望能够能够平滑快速翻动图片,所以就不可能提前预加载所有图片;那样会消耗太多的时间和内存。有时候图片也需要从远程网络连接中下载,这将会比从磁盘加载要消耗更多的时间,

3、甚至可能由于连接问题而加载失败(在几秒钟尝试之后)。你不能够在主线程中加载网络造成等待,所以需要后台线程。线程加载在第12章“性能调优”我们的联系人列表例子中,图片都非常小,所以可以在主线程同步加载。但是对于大图来说,这样做就不太合适了,因为加载会消耗很长时间,造成滑动的不流畅。滑动动画会在主线程的runloop中更新,所以会有更多运行在渲染服务进程中CPU相关的性能问题。清单14.1显示了一个通过UICollectionView实现的基础的图片传送器。图片在主线程中-collectionView:cellForItemAtIndexPath:方法中同步加载(见图14.1)

4、。清单14.1使用UICollectionView实现的图片传送器#import"ViewController.h"@interfaceViewController()@property(nonatomic,copy)NSArray*imagePaths;@property(nonatomic,weak)IBOutletUICollectionView*collectionView;@end@implementationViewController-(void)viewDidLoad{//setupdataself.i

5、magePaths=[[NSBundlemainBundle]pathsForResourcesOfType:@"png"inDirectory:@"//registercellclass[self.collectionViewregisterClass:[UICollectionViewCellclass]forC}-(NSInteger)collectionView:(UICollectionView*)collectionViewnumberOfI{return[self.imagePathscount];}-(UICollectionViewCell*)collec

6、tionView:(UICollectionView*)collectionVcellForItemAtIndexPath:(NSIndexPath*)indexPath{//dequeuecellUICollectionViewCell*cell=[collectionViewdequeueReusableCellWith//addimageviewconstNSIntegerimageTag=99;UIImageView*imageView=(UIImageView*)[cellviewWithTag:imageTag];if(!imageView){imageView

7、=[[UIImageViewalloc]initWithFrame:cell.contentViewimageView.tag=imageTag;[cell.contentViewaddSubview:imageView];}//setimageNSString*imagePath=self.imagePaths[indexPath.row];imageView.image=[UIImageimageWithContentsOfFile:imagePath];returncell;}@end图14.1运行中的图片传

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。