はじめに
- Xcodeのアセットカタログ(デフォルトではAssets.xcassets)は、画像などのリソースを管理します
- アセットカタログ内で、フォルダ分けも可能です
- その際、別のフォルダに同じ名前の画像を置きたくなることもあります
- その場合の扱い方です
検証環境
- Xcode 10.2.1
- iOS 12.2
- Swift 5
フォルダにNamespaceを付与する
デフォルトの状態(Namespaceなし)
- この画像の例では、
bird
という画像がforest
フォルダとsea
フォルダの両方に配置されています - ですが、デフォルトの状態ではフォルダ名は無視されるので、これらの画像には
bird
という名前でアクセスすることになり、区別ができません
フォルダ名付きでのアクセス(Namespaceあり)
-
アセットカタログ内でフォルダを選択し、Attributes Inspectorから
Provides Namespace
にチェックを入れると、そのフォルダ名がNamespaceとして利用されます- フォルダの色も黄色から水色に変わっていますね
-
この画像の例では、それぞれ
forest/bird
とsea/bird
という名前で区別されます -
こんな感じで、コード内でもInterface Builderでも参照できます
imageView.image = index == 0 ? UIImage(named: "forest/bird") : UIImage(named: "sea/bird")
まとめ
- Namespaceがあると、格段に管理がしやすくなりますね
- 今回作成したサンプルコードは、GitHubに置きました
- なお、この記事は私のブログ記事からの転載です