虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > 使用asset catalog管理图片资源

使用asset catalog管理图片资源
类别:IOS编程/Objective-C   作者:码皇   来源:厚积薄发     点击:

每年6月份的苹果开发者大会上,都会有一些新的技术被发布出来,这些新技术虽然初看比较高冷,但稍微一研读就会发现,大多数都是那种make life easy的很实用的技术,它要么能让我们写更好的代码,要么能让我们更好的写代码。

每年6月份的苹果开发者大会上,都会有一些新的技术被发布出来,这些新技术虽然初看比较高冷,但稍微一研读就会发现,大多数都是那种make life easy的很实用的技术,它要么能让我们写更好的代码,要么能让我们更好的写代码。总之,请不要害怕变化,大胆的去尝试吧。

题外话到此,下面进入正题。

asset catalog是苹果在2014年也就是iOS7系统上引入的用于APP内资源管理的辅助文件,我们可以把之前扔到bundle或者文件夹的图片或者其他资源放入asset catalog中,由它来帮我们管理资源,除了管理上的便利意外,它还能够带来另一个很大的实惠:他能帮助我们实现APP瘦身(APP Thinning)。
目前主要通过两种途径来实现瘦身:
首先,使用asset catalog能为不同的平台、不同设备甚至相同类型的设备但是不同的配置(比如内存大小等)提供定制化的资源供给的解决方案,提供不同资源,当用户下载APP的时候,只有该用户的设备需要的资源才会被下载下来,这样就减小了用户下载的包的大小:

这里写图片描述

对于游戏开发者而言,它还能提供对于资源的按需下载的功能(on demand resource or app slicing),通过对资源进行标记,能够让用户在一开始下载APP的时候,可以下载一个尺寸较小的包,而随着玩家打怪升级比如需要进入下一关,才下载下一关所需的资源。

这里写图片描述

asset catalog提供对图片和通用类型数据(generic data)的管理,对于通用资源的管理,这里简单提一下:你可以把你的APP需要使用的文本、二进制或者其他格式的文件拖进去,然后指定一下文件类型,就可以通过asset catalog来管理了。这里我们主要讨论的是它对图片的管理能力。
可以通过Xcode像其他文件一样方便的创建和使用。如下图:
这里写图片描述

通过打开文件夹我们可以看见asset catalog的真面目:它实际上并不是一种新类型的文件,而是一个文件夹,而文件夹里面存放的也都是常见的文件:子文件夹、我们放入管理的图片和管理图片真实名称和使用名称的映射。

这里写图片描述

打开一个json文本文件,我们就看到了asset catalog的核心了:它实际上就是用一个配置文件保存我们所有的关于这张图片的信息

这里写图片描述

关于asset catalog的使用,自己动手去用一用立马就明白了,下面仅罗列出一些小技巧:
1. 如何解决多个asset catalog中的同名图片资源的冲突问题:
首先j建议从根源上杜绝的话,可以对每个image set使用模块统一的前缀,虽然有些繁琐,但对于资源的规范、后期的维护是一劳永逸的。
另外一个方法就是在asset catalog中使用命名空间namespace:如下图

这里写图片描述

然后在使用图片的时候需要带上命名空间前缀:

    imageView.image = [UIImage imageNamed:@"folder1/Image"];
如何对asset catalog管理的图片进行未使用图片过滤。因为asset catalog都是简单的文件夹+配置文件的方式,因此可以编写脚本完成这种过滤。比如这里提供了一些脚本
或者直接看一段代码:
    #!/bin/bashfor i in `find . -name "*.imageset"`;
    do file=`basename -s .imageset "$i"` result=`ack -i "$file" --ignore-dir="*.xcassets"` if [ -z "$result" ];
    then echo "$i" fidone
利用asset catalog存储图片直接给某张图片设置可拉伸区域,这样你在代码里使用这张图片的时候就不用手动设置(具体怎么使用):

这里写图片描述

如下这段代码就可以省略了:<喎"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPiZuYnNwOzwvcD4NCjxwcmUgY2xhc3M9"brush:java;">UIImage *originalImage = [UIImage new];UIImage *stretchImage = [originalImage resizableImageWithCapInsets:UIEdgeInsetsMake(0.1, 0.1, 0.1, 0.1) resizingMode:UIImageResizingModeStretch];

利用asset catalog你可以给不同设配、不同配置、甚至不同屏幕状态的机型匹配不同的图片:

这里写图片描述

示例1. 为不同机型添加不同的配置图片

这里写图片描述
示例2. 为iPhone机型的1GB和2GB内存版本添加不同的图片

这里写图片描述

实例3. 为不同屏幕宽度的设备配置不同的图片(需要autolayout + sizeclass的支持)
5. 利用asset catalog可以将图片直接配置成model image,然后添加上不同的渲染颜色:

这里写图片描述

相关热词搜索: