1.設(shè)置AppIcon
2.使用矢量圖代替?zhèn)鹘y(tǒng)的位圖
在應(yīng)用開發(fā)中,我們通常會放置大量2x和3x的圖片素材以便在不同的設(shè)備中使用,現(xiàn)在iOS設(shè)備的PPI有逐年增大的趨勢, 未來很可能會有@4x和@5x等等, 這對設(shè)計人員和開發(fā)人員維護(hù)圖片素材都帶來了不小的麻煩
蘋果在Xcode6中便允許我們在項目中使用矢量圖來代替?zhèn)鹘y(tǒng)的位圖, 該種方式在iOS平臺上實際上只是一個障眼法,Xcode只是在編譯的時候根據(jù)矢量圖來自動生成對應(yīng)的@1x、@2x和@3x格式的位圖. 雖然不夠完美, 但是也足以讓我們省去很多維護(hù)不同格式圖片素材的麻煩. 其使用方式如下:
通過AI和Sketch等設(shè)計工具將矢量圖輸出成一個PDF文件
在Images.xcassets / Assets.xcassets中新建一個Image Set
如果是在Xcode6中, 在Attributes Inspector中將Types改為Vectors
如果是在Xcode6.3中, 在Attributes Inspector中將Scale Factor改為Single Vector
如果是在Xcode8中, 在Attributes Inspector中將Scales改為Single Scale
將PDF文件添加到Image Set中
自此, 當(dāng)編譯時會根據(jù)PDF文件自動生成對應(yīng)的@1x、@2x和@3x格式的PNG文件
?Xcode9中使用矢量圖
在Xcode9中, 該功能得到再次增強, 我們可以在Attributes Inspector中將Preserve Vector Data選項勾選. 此時在編譯時會將PDF文件拷貝到二進(jìn)制文件中, 以便我們可以在運行時任意縮放圖片而不會失真
Preserve Vector Data
注: 對于iOS10及以下系統(tǒng), 仍然會生成對應(yīng)的@1x、@2x和@3x格式的PNG文件, 此時無法保證在運行時任意縮放圖片而不會失真
在使用該圖片時, 我們讓像平時一樣使用即可, 比如在IB中直接選取圖片名稱, 或在Code中直接設(shè)置
UIImageView*imageView = [[UIImageViewalloc] init];imageView.image = [UIImageimageNamed:@"Main_button"];
打包之后會生成Assets.car文件,如何解壓.car文件方法如下:
1.創(chuàng)建解壓圖片資源存儲文件yyy
2.下載cartool工具,鏈接https://github.com/steventroughtonsmith/cartool
3.編譯code,并在工程下的Products文件夾中找到cartool,
4,打開終端,cd 到cartool目錄
5,執(zhí)行./cartool ?/Users/xxx/Desktop/xxx/Payload/xxx.app/Assets.car /Users/xxx/Desktop/yyy
4.在Assets.xcassets中拉伸圖片
我們在進(jìn)行應(yīng)用程序開發(fā)過程中, 常常會遇到需要拉伸圖片的需求, 平時我們都會使用UIImage的如下方法生成一張拉伸后的圖片
// 如果拉伸區(qū)域為1*1區(qū)域, 則采用拉伸模式, 此時性能最高// 如果拉伸區(qū)域大于1*1區(qū)域, 且capInsets為UIEdgeInsetsZero, 則采用平鋪模式, 此時性能略差// 如果拉伸區(qū)域大于1*1區(qū)域, 且capInsets不為UIEdgeInsetsZero, 則采用平鋪模式, 此時性能最差- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsetsNS_AVAILABLE_IOS(5_0);// 指定拉伸模式- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingModeNS_AVAILABLE_IOS(6_0);
其實, 在Assets.xcassets中可以直接對圖片進(jìn)行拉伸操作
我們可以通過點擊Show Slicing通過拖拽的方式確定capInsets的值
點擊Show Slicing拖拽
也可以直接在Attributes Inspector中設(shè)置capInsets的值
在Attributes Inspector中設(shè)置
5.在Assets.xcassets中渲染圖片
我們在進(jìn)行應(yīng)用程序開發(fā)過程中, 常常被系統(tǒng)強制將圖片進(jìn)行渲染, 一般我們都會使用UIImage的如下方法生成一張指定渲染模式的圖片
// UIImageRenderingModeAlwaysOriginal是按照原圖渲染// UIImageRenderingModeAlwaysTemplate是按照模板渲染// 默認(rèn)渲染模式為UIImageRenderingModeAutomatic, 基于上下文決定具體的渲染模式. 如果是在navigation bars, tab bars, toolbars, 和segmented controls中則為Template, 其余上下文則為Original- (UIImage*)imageWithRenderingMode:(UIImageRenderingMode)renderingModeNS_AVAILABLE_IOS(7_0);
其實, 在Assets.xcassets中可以直接設(shè)置圖片的渲染模式
6.在Assets.xcassets中添加顏色
我們在進(jìn)行應(yīng)用程序開發(fā)過程中, 常常會專門定義一個類用于定義整個應(yīng)用程序都需要使用到的顏色, 而在IB中卻無法使用統(tǒng)一定義好的顏色
蘋果在Xcode9中便允許我們在Assets.xcassets中添加顏色. 其使用方式如下:
在Assets.xcassets中新建一個Image Color Set
在Attributes Inspector中為顏色設(shè)置名字和色值
Xcode9中添加顏色
注: 可以新建一個Colors.xcassets文件單獨用于添加顏色
在使用該顏色時, 我們可以在Code中使用iOS11新加入的API, 或者讓像平時一樣在IB中直接選取顏色名稱
UIColor*color = [UIColorcolorNamed:@"TitleColor"];
copy蚊香醬的:?http://www.itdecent.cn/p/11b650054684