2016-03-03 33 views
0

我的资产目录中有多个图片,如下所示。有没有加载图像,而无需每次都使用硬编码字符串的简便方法:从不知名的情况下从xcassets加载图片

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

回答

0

目前无法在不知道名称的情况下从xcassets加载图像。一种方法是将图像名称存储在枚举中,因为已经提到了@totiG,但有超过100个标记,这将非常耗时。

幸运的是谁已经这样做对我们是一个库:FlagKit

0

一个用于存储图像的名称的方法是用枚举。我已经提供了两种方式来做到这一点 - 第二种方式给你一个很好的分组。

//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(名为:“AR”)

+0

的问题是,我有超过100个旗,我会写他们每个人的情况。 – ammerzon

相关问题