1. ホーム
  2. ios

[解決済み] プログラムによるアセットカタログへのアクセス

2023-01-09 09:05:21

質問

新しい機能なので不可能かもしれませんが、アセットカタログを使用して資産を整理できたらと思いますが、私はすべての画像にプログラムでアクセスしています。しかし、私はすべての画像にプログラムでアクセスしています。私はまだこのようにファイル名でそれらをアクセスするのでしょうか。

[UIImage imageNamed:@"my-asset-name.png"];

どうやらAsset Catalogは拡張子を参照していないようなので、".png"を付けずにアクセスした方が効率的でしょうか?

私が自分でテストする代わりに質問している理由は、私の資産と Asset Catalog を削除した後、ビルド フォルダーをクリーニングしても、私のアプリケーションで私の資産にアクセスできることです。このため、Asset Catalog を実装したときに、テストすることができません。

Asset Catalog に目を通した後、各資産の "Contents.json" を見つけ、それは次のようなフォーマットになっています。

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "[email protected]"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

まだ、どのようにアクセスすればいいのかわからないのですが、もしかしたら、これで解決するかも?

どのように解決するのですか?

アセットカタログから画像にアクセスするためには、拡張子を除いたアセットグループの名前にアクセスするだけです。

という名前の画像を追加すると @"[email protected]" という名前の画像をアセットカタログに追加すると、アセットグループに my-button .

あとは、このように画像にアクセスするだけです。

// Objective-C
[UIImage imageNamed:@"my-button"];
// Swift
UIImage(named: "my-button")

また、アセットグループの名前を変更したり(画像の名前を変更せずに)、個々のコンポーネントを変更することで、アセットグループを編集することができます。これにより、より簡単な命名規則に従うことができ、また、異なる UIScreen scale を使わずに scale をチェックします。

異なるデバイス サイズ用の画像を組み込むには、Asset Catalog グループのオプションの "Devices" の小見出しでトグルする必要があるかもしれません。 以下は、そのトグルの例です (グループを右クリックすると表示されます)。