簡(jiǎn)述:
1猜拾、工程中所有使用 Asset Catalog 管理的圖片(在 .xcassets 文件夾下)绍昂,最終輸出的時(shí)候,都會(huì)被壓縮到 Assets.car 內(nèi)拼岳。
2枝誊、反之,不在 Assets.car 內(nèi)的惜纸,我們將它統(tǒng)一歸類為 Bundle 管理的叶撒。
Bundle 和 xcassets 的主要區(qū)別有:
1)xcassets 里面的圖片,只能通過 imageNamed 加載耐版。Bundle 還可以通過 imageWithContentsOfFile 等方式祠够。
2)xcassets 里的 2x 和 3x,會(huì)根據(jù)具體設(shè)備分發(fā)粪牲,不會(huì)同時(shí)包含古瓤。而 Bundle 會(huì)都包含。(App Slicing)
3)xcassets 內(nèi)虑瀑,可以對(duì)圖片進(jìn)行 Slicing湿滓,即裁剪和拉伸。Bundle 不支持舌狗。
4)Bundle 內(nèi)支持多語(yǔ)言叽奥,xcassets 不支持。
另外痛侍,使用 imageNamed 創(chuàng)建的 UIImage朝氓,會(huì)立即被加入到 NSCache 中(解碼后的 Image Buffer),直到收到內(nèi)存警告的時(shí)候主届,才會(huì)釋放不在使用的 UIImage赵哲。
而 imageWithContentsOfFile。它每次都會(huì)重新申請(qǐng)內(nèi)存君丁,相同圖片不會(huì)緩存枫夺。
所以,xcassets 內(nèi)的圖片绘闷,加載后會(huì)產(chǎn)生緩存橡庞。
綜上,我認(rèn)為印蔗,常用的扒最,較小的圖,應(yīng)該放在 xcassets 內(nèi)管理华嘹。而大圖應(yīng)該放在 Bundle 內(nèi)管理吧趣。
關(guān)于 xcassets,我們有這么幾點(diǎn)需要注意:
1)圖片的大小,一定要準(zhǔn)確强挫。不要出現(xiàn)圖片太大的情況岔霸。
2)不要存放大圖,大圖會(huì)產(chǎn)生緩存纠拔。
3)不要存放 JPEG 格式圖片秉剑,會(huì)導(dǎo)致圖片變大泛豪。
摘選自:https://xiaozhuanlan.com/colin