iOS Assets.xcassets 的功能

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容