[英]Access Asset Catalog programmatically
我知道這是一個新功能,這可能是不可能的,但我希望能夠使用資產目錄來組織我的資產,但我以編程方式訪問我的所有圖像。 我現在如何訪問我的圖片? 我仍然可以通過文件名訪問它們,如下所示:
[UIImage imageNamed:@"my-asset-name.png"];
看起來,資產目錄沒有引用擴展名,所以在沒有“.png”的情況下訪問它會更有效嗎?
我要求而不是自己測試的原因是,即使刪除了我的資產和資產目錄,然后清理了構建文件夾,我仍然可以在我的應用程序中訪問我的資產。 當我實現它時,這阻止我測試資產目錄。
瀏覽資產目錄后,我找到了每個資產的“Contents.json”,其格式如下:
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "my-asset@2x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
我仍然不確定我應該如何訪問它,但也許這會有所幫助?
要從資產目錄訪問圖像,您只需訪問資產組的名稱而無需任何擴展名。
因此,如果將名為@"my-button@2x.png"
的圖像添加到資產目錄,它將創建一個名為my-button
的資產組。
現在,您所要做的就是訪問圖像,如下所示:
// Objective-C
[UIImage imageNamed:@"my-button"];
// Swift
UIImage(named: "my-button")
此外,您可以通過重命名資產組(不重命名圖像)或更改其各個組件來編輯資產組。 這將允許您遵循更簡單的命名約定,並在不同的UIScreen
scale
之間顯示完全不同的資產,而無需任何scale
檢查。
為了合並不同設備尺寸的圖像,您可能需要在資產目錄組選項的“設備”子標題下進行切換。 以下是切換的示例(通過右鍵單擊組可用)。
Apple還增加了使用Swift 3從資產中獲取圖像的新方法,它稱之為“Image Literal” ,其工作方式如下:
迅速
您可以在資產catelog中獲取對圖像的引用
UIImage(named: "myImageName")
您不需要包含擴展名。
@RileyE 100%正確。 但是,根據我的經驗值得注意的是,有時圖像的資產目錄引用可能包含尾隨空格。 你可能不會注意到如果使用storyboards / xibs,因為自動完成將添加它。 但是當你從代碼中引用它時,問題就不那么明顯了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.