奇技指南
本文来自360奇舞团iOS团队QiShare投稿,原文:
https://www.jianshu.com/p/f4e78a44ddf8
前情回顾
一个完整的app都需要多种尺寸的图标和启动图。一般情况,设计师根据开发者提供的一套规则,设计出图标和启动图供开发人员使用。但最近作者利用业余时间做了个app,不希望耽误设计师较多时间,就只要了最大尺寸的图标和启动图各一个。本想着找一下现成的工具,批量生成需要的的图片,但最后没有找到,只好使用Photoshop切出了不同尺寸的图片。这期间,设计师还换过一次图标和启动图,作者就重复了切图工作,这花费了大量的时间。于是事后,作者开发了一个mac app——图标&启动图生成器(简称生成器)以提高工作效率。
作者用两篇文章分别介绍生成器的使用和实现细节。本文是第二篇。
接上篇文章《iOS 图标&启动图生成器(一)》,本篇文章介绍生成器的实现细节。
生成器的工程非常简单,可以概括为一个界面、一个资源文件和一个ViewController。结构如下图。
01
界面
生成器app只有一个界面,因为界面复杂度较小,作者选用了Storyboard+Constraints的方式进行开发。下图显示了界面中的控件和约束情况。
其中各控件对应的类如下所示。
控件 | 类 |
---|---|
图片框 | NSImageView |
平台选择器 | NSComboBox |
路径按钮 | NSButton |
路径文本框 | NSTextField |
导出按钮 | NSButton |
02
资源文件
app所支持的平台规则数据从资源文件QiConfiguration.plist
中获取。QiConfiguration.plist
相当于一个字典,每个平台对应着字典的一对key
和value
;value
是一个数组,存储着该平台所需要的一组尺寸规格数据(item);item
是尺寸规格数据的最小单元,内部标记了该尺寸规格的图片的用途、名称和尺寸。
QiConfiguration.plist
的具体结构如下图所示。
03
ViewController
工程使用默认的ViewController
管理界面、资源数据和逻辑。
首先,界面控件元素在ViewController
中对应下图中的5个实例。
其中,imageView
、platformBox
和pathField
不需要响应方法。并且,platfromBox
和_pathField
的默认/记忆数据由NSUserDefaults
管理。
static NSString * const selectedPlatformKey = @"selectedPlatform";static NSString * const exportedPathKey = @"exportedPath";NSString * const selectedPlatformKey = @"selectedPlatform";
static NSString * const exportedPathKey =