2017-02-18 73 views
1

在我的應用程序中,我允許用戶根據顏色更改一些UI元素。所以,我有一個形象的三個版本可用於一個按鈕,我想選擇編程形象:如何在Swift中訪問圖像資產(如數組)

PSEUDO CODE 
"image0", "image1", "image3" 
var userChoice:integer 

myButton.setImage("myImage"+userChoice , .normal) 

我見過所以這個解決方案: Programmatically access image assets

什麼將是Swift等效代碼?

現在我使用的圖像文字:

self.But_Settings.setImage(#imageLiteral(resourceName: "settingswhite"), for: UIControlState.normal) 

但當然Xcode中改變了這一部分「#imageLiteral(資源名稱:‘settingswhite’)」到無法編輯的圖標。

+0

您認爲這有幫助嗎? :But_Settings.setImage(UIImage(命名爲:「play.png」),用於:UIControlState.normal)。這裏您使用的是資產的名稱。 –

+0

@VandanPatel - 是的,這確實有幫助。我希望你已經把它作爲答案,所以我可以信任你。儘管如此,謝謝。 – wayneh

+0

我剛剛那樣做了。大聲笑 –

回答

2

然後不要使用圖像文字。圖像文字就是這樣 - 代碼中的一個硬性值,在運行時不能改變。從您的包中動態加載圖像:

if let image = UIImage(named: "myImage" + userChoice) { 
    self.But_Settings.setImage(image, for: .normal) 
} 
+0

是的!和DUH!謝謝 – wayneh

0

您認爲這有幫助嗎? :But_Settings.setImage(UIImage(命名爲:「play.png」),用於:UIControlState.normal)。這裏您使用的是資產的名稱

0

由於它的選擇有限,它聽起來像是一個枚舉的好地方。

enum ImageChoice: Int { 
case zero = 0, one, two 

var image: UIImage { 
switch self { 
    case .zero: 
    return // Some Image, can use the icon image xcode provides now 
    case .one: 
    return //another image 
    case .two: 
    return //another image 
    } 
} 
} 

然後,您可以通過使用Int值初始化enum來輕鬆獲取正確的圖像。

guard let userChoice = ImageChoice(rawValue: someInt) else { return //Default Image } 
let image = userChoice.image 
相關問題