iOS7 Day-by-Day :: Day2 :: Asset Catalog
原文:http://www.shinobicontrols.com/blog/posts/2013/09/23/ios7-day-by-day-day-2-asset-catalog
介绍
在以前我们总是要花时间来摆弄Xcode工程中组织的图片资源—从来不确定我们是否拿到了所有图片的视网膜屏的版本,或者是否拿到了我们需要的所有不同版本的图标。在以前这充其量就是互不相交的处理过程,但是对于Xcode5和iOS7苹果介绍了资源目录这个新概念,它同时组织了物理图片文件还有与它们有关的上下文信息。
资源目录
一个资源目录包含了所有图片、应用图标、启动画面和XCode创建的。当在Xcode5中创建了一个新工程时一个资源目录也将被创建,叫做Images,将用来准备放应用的图标和启动画面。XCode提供了工具将以前的应用转移到使用资源目录上。
在iOS7中目录会被编译成优化过的二进制文件形式来减少编译完成后的应用的大小。
资源目录是一个由Xcode管理的磁盘上的文件目录。资源目录以一种特别的方式被组织,并且包含了一个json文件来存储与目录相关的元数据。
应用图标与启动图片
Xcode自动创建的资源目录叫作Images.xcassets并且包含全部的应用图标和启动图片。每一个图片都有适合你工程的部署对象的位置,并且包含了需要的大小:
仅仅拖拽图片从Finder中到Finder中的资源目录管理器中,就会将图片放到了资源目录里。如果你提供了一个大小不正确的图片,那么Xcode就会产生警告。
普通的图片集
和标准的集合一样,你可以使用资源目录来管理你自己的图片。图片被包含在一个图片集中,具有一个同一图片的视网膜屏和非视网膜屏版本的参考
在Xcode中创建一个图片集完成了,并且你可以在文件夹中组织这个图片集以便容易导航。使用存放在资源目录中的图片和使用UIImage:imageNamed:一样简单:
UIImage *image = [UIImage imageNamed:@“Australia"];
图片切片
资源目录的另一个主要功能是做图片切片。以这种方式重新调整了大小创建的图片自从iOS2就已经适用了,但是Xcode新增的这个功能这样做变得非常的简单。
使用切片改变图片的大小对于创建像按钮这样的可视化元素是一种很常见的方式—图片的中间应该被拉伸或平铺来使用新的大小,边缘应该在一个方向拉伸并且四角应该保留原有的大小。
对于资源目录中的图片集切片也是适用的—点击“Show Slicing”按钮(在界面的右下角或者在菜单栏的Editor中)就可以了。你可以选择水平、垂直或者两个方向的缩放方向。你的图片将会按照指引的那样被覆盖,固定四角并且调整中间部分的大小。
使用这些切片图片非常的容易—只要像之前一样创建一个UIImage,当你改变由于展示他的UIImageView的大小时,图片将作为位每个切片重新缩放。
UIImage *btnImage = [UIImage imageNamed:@"ButtonSlice"];
// Let's make 2
UIImageView *iv = [[UIImageView alloc] initWithImage:btnImage];
iv.bounds = CGRectMake(0,0,150, CGRectGetHeight(iv.bounds));
iv.center = CGPointMake(CGRectGetWidth(self.view.bounds) / 2,300);
[self.view addSubview:iv];
// And a stretched version
iv = [[UIImageView alloc] initWithImage:btnImage];
iv.bounds = CGRectMake(0,0,300, CGRectGetHeight(iv.bounds));
iv.center = CGPointMake(CGRectGetWidth(self.view.bounds) / 2,350);
[self.view addSubview:iv];
总结
对于iOS开发工具包来说资源目录并不是一个非常突出的新功能,但是它们确实减少了一些开发中烦琐的事情。对于XCode5创建的项目资源目录是可用的,并且将会使资源管理是一件不是很艰苦的事情。
不要忘记了你可以在github上得到这个项目的代码 github.com/ShinobiControls/iOS7-day-by-day。