ios - 在不知道名称的情况下从 xcassets 加载图像

标签 ios swift uiimage xcasset

我的 Assets 目录中有多个图像,如下所示。有没有一种方便的方法来加载图像而无需每次都使用硬编码字符串:

var images = [UIImage]()
images.append(UIImage(named: "South_America-Argentina")!)
images.append(UIImage(named: "South_America-Bolivia")!)
images.append(UIImage(named: "South_America-Brazil")!)
// ...

xcassets

最佳答案

存储图像名称的一种方法是使用枚举。我在下面提供了两种执行此操作的方法 - 第 2 种方法为您提供了一个很好的分组。

//Method 1
enum CountryFlags: String {
    case Argentina = "South_America-Argentina"
    case Brazil = "South_America-Brazil"

    var image: UIImage? {
        return UIImage(named: self.rawValue)
    }
}

//Method 2
enum CountryImages {
    enum SouthAmerica: String {
        case Argentina = "South_America-Argentina"
        case Brazil = "South_America-Brazil"

        var image: UIImage? {
            return UIImage(named: self.rawValue)
        }
    }
    enum Africa: String {
        case Egypt = "Africa-Egypt"

        var image: UIImage? {
            return UIImage(named: self.rawValue)
        }
    }
}

你可以像这样使用它:

let method1Image = CountryFlags.Argentina.image
let method2Image = CountryImages.SouthAmerica.Argentina.image

如果您的图像名称不同,例如按国家/地区代码命名,那么您可以获得国家/地区代码列表,然后循环访问该列表即可加载图像。因此,如果您需要使用代码 AR 加载阿根廷国旗,您可以使用 UIImage(named: "AR")

关于ios - 在不知道名称的情况下从 xcassets 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771186/

相关文章:

ios - 通过触摸应用程序图标启动应用程序时,应用程序图标角标(Badge)编号不会更改为零

macos - SWIFT OS X - 从持久存储中删除托管对象 : fatal error

iphone - 旋转 UI 图像?

ios - 实时混合 UIImages

ios - iPhone 6 Plus 上的 UIImage 缩放

iphone - 事件从 iPhone 删除应用程序时

ios - 使用带有 reloadData 的动画

ios - GMSAutocompleteResultsViewController 显示有限的结果?

ios - swift : One Navigation bar item

ios - Sprite 套件中的 SKShapeNode 碰撞检测未检测到碰撞