原文:http://schlu.org/2013/10/01/Xcode-Asset-Catalogs.html

基础知识
在今年的WWDC大会上苹果介绍了Asset Catalogs。Asset Catalogs是用来减少工程导航上的混乱,让图片使用情况变得更为有条理。它的方式是,你不必将所有图片都列出来,取而代之,你可以在工程中创建一个或者多个asset catalog,你可以把图片拖拽到一个合适的位置来进行管理。

Asset Catalog除了可以管理app icon以及启动图片,你还可以使用它管理任意图片。图片可以为所有设备使用,也可以为是某一设备的特定图片。这种方式非常方便,因为你不必在记住为iPhone或者iPad或者retina屏或者4英寸iPhone等设备提供的特定图片的名字。

Universal

特定设备

切图以及改变尺寸
你可以使用Asset Catalog来切图。它会告诉iOS以及Xcode当view比图片更大的时候如何拉伸图片。这个功能iOS之前也使用几个UIImage的不同方法支持了,最新的方法是resizableImageWithCapInsets:。其中最大的改进就是Interface Builder现在图片即使会拉伸,插件仍然能正确显示。和之前一样,拉伸的方向是竖直拉伸,水平拉伸,或者双向拉伸。

在Xcode中切图有一个非常好的地方就是设计师们提供的图片的宽度是不受限制的。你不必告诉Xcode图片的末端在哪里。进行了一些小测试之后,我发现Xcode会在运行的时候就生成一些最小的图片以供需要。这就意味着它会在将图片打包格尼之前就切掉所有不需要的部分。这样就非常好了,在Xcode中你可以看到图片的完整大版本,但是打包的时候又只提供最小的部分。

详细情况你可以点此看看苹果关于切图的官方文档>>

技术问题
关于这点我没有深入进行研究,但是看上去似乎Asset Catalogs都被放到一个叫做Assets.car这个文件中。我并不清楚具体使用了哪个特定的二进制格式来打包所有图片,然后切图的,但是我猜这样做的有个有点事你不需要浪费block空间了。你可能知道你能分配给一个文件的最小空间是1block。由于iOS的block大小是8k,如果一张图片是12k,他就会占用1.5block,有半个block被浪费了。想想如果是1000张图片,那么这样的话节省多少blcok啊。这样为你的用户缩短下载时间。

加载Asset Catalogs有一些间接成本。我认为app会将所有的asset载入内存,这样就会有一些图片占用了内容,但是不会被使用。这也就是说,如果想要出问题的话你可能还没有足够的图片。但是有一件事情不管如何你都需要做的就是删除不需要的图片。使用了一款Mac app:Slender。它现在还不支持Asset catologs,但是希望以后它能支持。

更新以及比较分辨图片
使用Asset Catalogs有一个最大的问题就是更新图片。我和设计师一起工作时他们经常要迭代多次来确保app看上去很完美。一般我会从设计师那儿拿到一组新图,然后把它们拖到工程中使用。正如之前说的,在Asset Catalog中如果你希望更新图片你需要把它们拖到正确的盒子当中,这么做有些麻烦。但是现在我也没有一个很好的方法来优化这个流程。由于Asset Catalogs的重点就是从繁杂的文件名中解放出来,所以我不知道Xcode可以怎么样知道如何把图片放到正确的位置。

另一个问题就是   。以前可以再Xcode的版本编辑器中看到新旧图片会紧挨在一起
。而现在的Asset catalogs,就算只有一张图片变化了,它就认为这个catalog整个变化了。这对我来说基本不是个问题,因为我使用Black Pixel公司的Kaleidoscope 来处理我比较分辨图片的需要。Kaleidoscope在比较分辨图片的时候仍然很好用。但是不能在工程的导航处了解到哪些东西变化了还是不太方便。

本地化以及翻译
图片和app中的其他东西一样也需要本地化和翻译。在这一点上我不知道本地化Asset Catalogs的方法。但是这个问题可能不太要紧,因为图片本地化的需要进行也是因为某个icon在某个国家代表了完全不同的意义。如果发生了,也没有足够的理由不让你使用Asset Catalogs。如果需要翻译一张图片的话还可以使用过去的方式。

iOS 6
这也可能不是什么问题,因为很多人都会很快只为iOS 7进行开发。如果你想同样兼容iOS 6,它会包含Assets.car文件以及所有的图片文件。我没有去研究它会如何影响变化图片大小。这个问题无关紧要,因为如果你想要兼容iOS 6的话,因为会增加app的大小,你根本就不应该使用Asset Catalogs。

论坛原帖:http://www.cocoachina.com/bbs/read.php?tid=161717

粗解Xcode 5新特性: Asset Catalogs的更多相关文章

  1. xcode 10 新特性

    这里主要介绍一下Xcode10 版本主要更新的内容.随着iOS12的发布,Xcode10已经可以从Mac App Store下载.Xcode10包含了iOS12.watchOS 5.macOS10.1 ...

  2. iOS 11系列 - Xcode 9新特性

    Xcode 9最近刚刚发布,带来了一系列不错的新特性,可以更好的帮助到开发者完成开发工作. Xcode Runtime Tool Xcode 9中有许多Runtime Tool可以帮助开发者找到代码错 ...

  3. IOS学习【xcode 7新特性url链接】

    由于xcode7的更新,在访问http链接的时候会输出错误信息 The resource could not be loaded because the App Transport Security ...

  4. Xcode 8 新特性

    在2016 苹果全球开发者大会(WWDC)期间, 苹果一如既往地给开发者们披露了新版的集成开发工具 – Xcode, 在过去的每一次大版本发布中,苹果都会积极地改进开发工具,添加一些极具吸引力的新功能 ...

  5. 详解Hadoop3.x新特性功能-HDFS纠删码

    文章首发于微信公众号:五分钟学大数据 EC介绍 ​Erasure Coding 简称EC,中文名:纠删码 EC(纠删码)是一种编码技术,在HDFS之前,这种编码技术在廉价磁盘冗余阵列(RAID)中应用 ...

  6. Java9 新特性 详解

    作者:木九天   <   Java9 新特性 详解  > Java9 新特性 详解 摘要: 1.目录结构 2.repl工具 jShell命令 3.模块化 4.多版本兼容jar包 5.接口方 ...

  7. Xcode9新特性介绍-中文篇

    背景: Xcode 9 新特性介绍: 1.官方原文介绍链接 2.Xcode9 be ta 2 官方下载链接 本文为官方介绍翻译而来,布局排版等都是按照官方布局来的. 与原文相比,排版上基本还是熟悉的配 ...

  8. Xcode8新特性和iOS10新特性

    从 Xcode 8.0 开始,目前所有的插件都无法工作! NSLog 无法输出 -- 此bug等待正式版本... Xcode 提供了文档注释快捷键option + cmd + / 但是要把系统升级到1 ...

  9. java8新特性学习:stream与lambda

    Streams api 对 Stream 的使用就是实现一个 filter-map-reduce 过程,产生一个最终结果,或者导致一个副作用(side effect). 流的操作类型分为两种: Int ...

随机推荐

  1. Spring cron 表达式

    前言: 最近做的项目有用到定时器,每周只在特定时间运行一次,考虑到Spring Task的简单易用性,就果断选择了,我是配置在配置文件里面,没有用注解@Scheduled,推荐配置,注解虽方便,但更改 ...

  2. 有趣的js题目

    ([]).length ({}).length // undefined ([] + {}).length ({} + {}).length 具体解释见此.

  3. 学好Javascript是有方法的

    先声明下噢,这篇文章不是自个儿写的,看着好,希望前端小孩们可以和我一起加油,大家都来借鉴借鉴吧- 首先要说明的是,咱现在不是高手,最多还是一个半桶水,算是入了JS的门. 谈不上经验,都是一些教训. 这 ...

  4. android studio修改新项目package名称

    android项目生成APK发布必须保证package唯一.新项目在已有项目基础上修改就必须修改package名称. 操作如下: 1) 在模块(module)上右键选择Refactor->Ren ...

  5. ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

    use mysql mysql> select host, user from user; 将相应用户数据表中的host字段改成'%': update user set host='%' whe ...

  6. [Everyday Mathematics]20150226

    设 $z\in\bbC$ 适合 $|z+1|>2$. 试证: $$\bex |z^3+1|>1. \eex$$

  7. T-SQL:SQL Server-数据库查询语句基本查询

    ylbtech-SQL Server-Basic:SQL Server-数据库查询语句基本查询 SQL Server 数据库查询语句基本查询. 1,数据库查询语句基本查询   数据库 SQL Serv ...

  8. hibernate建表 一对多 多的一方控制一的一方

    一对多 单向<one-to-many>通过calss操作student 外键在student表中,所以外键由student维护<many-to-one>通过student操作c ...

  9. 模式自由(Schema-free)和数据存储的非格式化趋势

    最近遐想,数据存储的非格式化趋势. 格式化表格到自由的XML存储 数年以前,多家数据库厂商开始XML数据库存储.XML数据作为一种自描述的半结构化数据为Web的数据管理提供了新的数据模型,如果将XML ...

  10. 11、NFC技术:NDEF Uri格式解析

    NDEF Uri格式规范 与NDEF文本格式一样,存储在NFC标签中的Uri也有一定的格式 http://www.nfc-forum.org/specs/spec_dashboard 编写可以解析Ur ...