码迷,mamicode.com
首页 > 其他好文 > 详细

使用asset catalog管理图片资源

时间:2016-04-30 14:21:27      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

使用asset catalog管理图片资源

每年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"];
  1. 如何对asset catalog管理的图片进行未使用图片过滤。因为asset catalog都是简单的文件夹+配置文件的方式,因此可以编写脚本完成这种过滤。比如这里提供了一些脚本
    或者直接看一段代码:
    #!/bin/bash

for i in `find . -name "*.imageset"`; do
    file=`basename -s .imageset "$i"`
    result=`ack -i "$file" --ignore-dir="*.xcassets"`
    if [ -z "$result" ]; then
        echo "$i"
    fi
done
  1. 利用asset catalog存储图片直接给某张图片设置可拉伸区域,这样你在代码里使用这张图片的时候就不用手动设置(具体怎么使用):

技术分享

如下这段代码就可以省略了:

UIImage *originalImage = [UIImage new];
UIImage *stretchImage = [originalImage resizableImageWithCapInsets:UIEdgeInsetsMake(0.1, 0.1, 0.1, 0.1) resizingMode:UIImageResizingModeStretch];
  1. 利用asset catalog你可以给不同设配、不同配置、甚至不同屏幕状态的机型匹配不同的图片:

技术分享

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

技术分享
示例2. 为iPhone机型的1GB和2GB内存版本添加不同的图片

技术分享

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

技术分享

使用asset catalog管理图片资源

标签:

原文地址:http://blog.csdn.net/lihuiqwertyuiop/article/details/51286219

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!