使用asset catalog管理图片资源

使用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,然后添加上不同的渲染颜色:

时间: 2024-11-08 07:05:52

使用asset catalog管理图片资源的相关文章

Asset Catalog Help (一)---About Asset Catalogs

About Asset Catalogs Use asset catalogs to simplify management of images that are used by your app as part of its user interface. 使用asset catalogs可以简化应用程序中需要使用图片的管理,把它们作为用户界面的一部分. An asset catalog can include: 一个asset catalog可以包括以下内容: Image sets: Use

Asset Catalog Help (三)---Adding Image Sets

Adding Image Sets Organize versions of your images in image sets, which you can add to an asset catalog. 你可以用图片集组织管理不同版本的图片 ,图片集可以放入一个asset catalog. In the project navigator, select an asset catalog. 在项目导航区(project navigator)中,选择一个asset catalog. Sele

Asset Catalog Help (二)---Creating an Asset Catalog

Creating an Asset Catalog Create an asset catalog to simplify management of your app’s images. 创建一个asset catalog来简化管理应用程序图片. Choose File > New > File. 选择File > New > File. Under iOS or OS X, select Resource. 在iOS 或 OS X中选择 Resource. Select Ass

Asset Catalog Help (六)---Adding OS X Icons

Adding OS X Icons Simplify image management by storing your OS X icons in an asset catalog. 把OS X图标存进一个asset catalog里可以简化图片管理. In the project navigator, select an asset catalog. 在项目导航区,选择一个asset catalog. Choose Editor > New OS X Icon. 选择Editor > New

【译】4个你需要知道的Asset Catalog的秘密

本文由CocoaChina译者 @唧唧歪歪 翻译,作者:Hector Matos 原文:4 XCODE ASSET CATALOG SECRETS YOU NEED TO KNOW 恶梦 想象你正在干活,你的上级要求你在工程中加入一些图片.你找到团队中的设计师(如果你们有一个的话),鼓起勇气,问他要这些图片.不过,通常他都会忙得根本没时间帮你.因为他要做的活儿比你还多.说实话,你到底见过一个设计师有多少活儿要做吗?!简直多到令人发指啊!所以你最不想做的就是成为那个再给他加活儿的人了.特别是那些活

ERROR ITMS-90682: Invalid Bundle - The asset catalog at 'Payload/XXXXX/Assets.car' can't contain 16-bit or P3 assets if the app supports iOS 9.3 or earlier.

刚升级Xcode 8, 幺蛾子又出现了.提交的时候出了这个问题. BTW,感谢google.以下为解决方案:‘ 在 Xcode 8 中,当你资源文件中[含有16位图]或者[图片显示模式γ值为'P3']且iOS targets设定为iOS 9.3以下就会出现这个问题. 如果你的app需要支持广色域显示的话,那你必须得把target设置成iOS 9.3+,相反,如果你的app不需要支持广色域且你想兼容 iOS 9.3 之前的项目,你就得把所有的16位的或者显示模式为'P3'图片全都替换成8位模式的S

Asset Catalog Help (十)---Removing Images and Sets

Removing Images and Sets Optimize the size of an asset catalog by removing unused images or sets. 通过删除不用的图片或图片集优化一个asset catalog的大小. Do one of the following: 可以使用以下方法: Remove an image from its set by Control-clicking the image and choosing Remove Sel

Asset Catalog Help (九)---Specifying a Resizable Area of an Image

Specifying a Resizable Area of an Image Use the Xcode Slicing feature to specify the dimensions of a resizable center area of the image and to optionally specify end caps, which are areas of the image that should not be filled by the resizable area.

Applications using Launch Screen Files and targetting iOS 7.1 and earlier need to also include a Launch Image in an Asset Catalog.

在使用xcode6建的项目时,有时在ios7模拟器下会出现一下情况 导航栏上方和tabbar下方会有黑边 并且会有一下警告: 解决方案: 1.选择launch images  use asset catalog 2.点击migrate 3.完美解决问题,没有警告.