iOS开发之性能优化<一>

2018-04-08  本文已影响0人  f1e583c455bf

一、加载本地图片是否缓存

1.常见的加载本地图片有两种方式:

1.用imageNamed加载
2.用imageWithContentsOfFile加载

2.用imageNamedimageWithContentsOfFile的区别:

imageNamed的优点是当加载时会缓存图片。imageNamed的文档中这么说:这个方法用一个指定的名字在缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。
相反的,imageWithContentsOfFile仅加载图片。

3.用imageNamedimageWithContentsOfFile的代码:
//imageNamed当加载时会缓存
UIImage *img = [UIImage imageNamed:@"name"];
//imageWithContentsOfFile仅加载图片,不会缓存
UIImage *img = [UIImage imageWithContentsOfFile:@"name"];
4.使用选择

如果你要加载一个大图片而且是一次性使用,那么就没必要缓存这个图片,用imageWithContentsOfFile,这样不会浪费内存来缓存它。例如引导页图片等。
然而,在图片反复重用的情况下imageNamed是一个好得多的选择。

二、正确的设置背景图片

1.常见的View背景图片设置

1.使用UIColor的 colorWithPatternImage来设置背景色
2.View添加imageview,设置imageview的背景图片

2.使用选择

1、如果你使用全画幅的背景图,你就必须使用UIImageView。因为UIColor的colorWithPatternImage是用来创建小的图片作为背景的。这种情形下使用UIImageView可以节约不少的内存
2、如果你用小图平铺来创建背景,你就需要用UIColor的colorWithPatternImage来做了,它会更快地渲染也不会花费很多内存

3.代码使用
//1.大图背景,view添加imageview,加载imageview背景图
UIImageView *bgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background"]];
[self.view addSubview:bgView];
//2.小图背景,view之间用UIColor的colorWithPatternImage方法
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];

三、在ImageView中调整图片大小

如果要在UIImageView中显示一个来自本地的图片,你应保证图片的大小和UIImageView的大小相同。在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。
如果图片是从远端服务加载的不能控制图片大小,可以在下载完成后先缩放一次,然后在UIImageView中使用缩放后的图片。

四、尽量把views设置为不透明

如果你有透明的Views你应该设置它们的opaque属性为YES。原因是这会使系统用一个最优的方式渲染这些views。这个简单的属性在XIB或者代码里都可以设定。

Apple的文档对于为图片设置不透明属性的描述是:
(opaque)这个属性给渲染系统提供了一个如何处理这个view的提示。如果设为YES,渲染系统就认为这个view是完全不透明的,这使得渲染系统优化一些渲染过程和提高性能。如果设置为NO,渲染系统正常地和其它内容组成这个View。默认值是YES。

在相对比较简单的布局中,设置这个属性不会有太大影响。然而当这个view嵌在scroll view里边,或者是一个复杂动画的一部分,不设置这个属性的话会在很大程度上影响app的性能。

上一篇下一篇

猜你喜欢

热点阅读