簡體   English   中英

以編程方式訪問資產目錄

[英]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” ,其工作方式如下:

Image Literal

迅速

您可以在資產catelog中獲取對圖像的引用

UIImage(named: "myImageName")

您不需要包含擴展名。

@RileyE 100%正確。 但是,根據我的經驗值得注意的是,有時圖像的資產目錄引用可能包含尾隨空格。 你可能不會注意到如果使用storyboards / xibs,因為自動完成將添加它。 但是當你從代碼中引用它時,問題就不那么明顯了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM