拾遗补陋之 Asset Catalog

资源目录(Asset Catalog)

资源目录(Asset Catalog)是 Xcode5 时引入的功能,目的是方便开发者管理工程中使用的图片素材。

在新建工程时,系统会分配一个默认 Asset Catalog (Assets.xcassets)。如果你想自己创建,你也可以选择通过 [File –> New File –> Resouce –> Asset Catalog] 的方式来完成。

一个 Asset Catalog 主要由以下几部分组成:

1.Group : 相当于文件夹,支持文件嵌套,其实就是个文件夹。

2.Asset : 资源组。比如一个图片组(Image Set),我们可以在里面添加适用于不同分辨率的资源,使用时只调用Asset的名字即可。

let flag = UIImage(named: "flag")

3.Attribute:属性。点击Group或Asset,在屏幕右侧会显示该对象的属性信息。

相比普通Asset,App Icons 和 Launch Images 为了在不同设备、App Store或者推送时显示多了许多尺寸格式

图像切片(Image Slicing)

Asset Catalog 不只是一个资源存放的地方,它还提供了一些服务,比如Image Slicing(图像切片)。

点击视图界面右下方的Show Slicing 按钮,就可以进入图像切片界面。点击Start Slicing后,图像的横向或纵向会出现三根直线,你可以拖拽这三根线来修改你想要的缩放效果。规则是,在左侧线(或者上方线)和中间线之间的像素将在缩放时被填充,在中间线和右侧线(或者下方线)之间的像素将被隐藏。

效果如下:

PDF矢量图

在使用Asset Catalog管理图片资源时,我们发现,在我们设置一个Asset时,需要为不同分辨率单独设置一张图片。假如,Apple生产了一个新分辨率设备,我们又得匆匆忙忙为新的高清屏设置新的图片。

是否有一个一劳永逸的法子呢?答案是有的。我们可以使用PDF矢量图来设置Asset。pdf矢量图的原理是在build时导出所需要的@1x,@2x,@3x资源,因此pdf格式的矢量图并不会减小App包的Size。pdf格式矢量图和普通图片资源设置方式是一样的,只不过在将pdf拖入Asset Catalog后,需要在右侧属性面板上选择一下Single Scale。

使用时和普通Asset一样:

let icon = UIImage(named: "octoface_pdf")

App Slicing (App瘦身,适用版本 iOS 9+)

随着需要支持的分辨率越来越多,App里包含资源的体积也越来越大。从前面可知,Asset需要支持1x 2x 3x的分辨率,但其实每种分辨率设备能用到的资源只有一种,没有必要让其中一种分辨率设备去加载其他分辨率设备的Assets。

Apple也意识到了这个问题,从iOS 9开始,只要开发者在开发过程中使用了Asset Catalog,并根据分辨率加入了正确的Asset。新的Xcode7和App submit会对这些1x 2x 3x分辨率的Assets做一定的处理,让用户在下载时只下载到自己所需的Assets。

源码

参见

Comments