2016-06-26 59 views
3

我正在研究一個有按鈕的應用程序。該按鈕沒有文字,圖像或背景。如何在swift中更改按鈕圖像?

所以我想要做的就是在viewDidLoad函數中給它一個圖像。

這是我有:

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    tapButton.setImage("redTap.png", forState: UIControlState.Normal) 
} 

但是我有說,我不能把字符串轉換爲UIImage的錯誤。

我該如何讓它起作用?

我曾嘗試:

let image = UIImage(named: "redTap.png") 

tapButton.setImage(image, forState: UIControlState.Normal) 

我得到它的工作,但現在我有一個問題。

圖像假設爲紅色文本,但顯示爲藍色。

我能夠用得到的圖像正確顯示:

let image = UIImage(named: imageColor[randNum])?.imageWithRenderingMode(.AlwaysOriginal) 
tapButton.setImage(image, forState: UIControlState.Normal) 

我現在想要的是沒有按下按鈕時,該按鈕被突出顯示。我有幾個其他按鈕在xcode中分配給它們的圖像,而不是通過代碼。按下時不會突出顯示。

那麼我怎樣才能擺脫當按鈕被按下突出顯示?

回答

8

你不需要 「巴紐」。

如果「.imageWithRenderingMode(.AlwaysOriginal)」正在爲您工作:要使相同的圖像保持不同的狀態,您必須爲不同的狀態設置相同的圖像/屬性。

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal) 
    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Highlighted) 
} 
+0

它現在正在工作,但不是顯示一個紅色的按鈕,這是圖像,它顯示一個藍色的。我如何讓它顯示原始圖像? – user2303213

+0

更新了代碼以顯示如何在不同狀態下保持相同。 –

+0

你不需要設置兩個狀態。如果沒有其他設置,所有狀態都使用與「正常」狀態相同的圖像。 – rmaddy

0

令圖像=的UIImage(命名爲: 「redTap.png」) tapButton.setImage(圖像,。正常)

+0

我試過,但它仍然不起作用 – user2303213

+0

您的圖像是否在XCode image.assets文件夾中? – impression7vx

0

首先,我會把你的Assets.xcassets文件夾中想要的圖像。只需將其拖入。然後,您可以通過雙擊它來隨意調用它。可以說它被稱爲「redTap」。

對於代碼,你會放:

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    let redTapImage = UIImage(named: "redTap") 
    tapButton.setImage(redTapImage, forState: UIControlState.Normal) 
} 
0
let button = UIButton(type: .Custom) 
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate) 
button.setImage(image, forState: .Normal) 
button.tintColor = UIColor.redColor() 
0

有一個簡單的解決方案:

@IBOutlet var tapButton: UIButton!{ 
didSet{ 
let image = UIImage(named: imageColor[randNum]) 
tapButton.setImage(image, forState: UIControlState.Normal) 
} 

除此之外,在屬性檢查器設置按鈕類型,以 '定製'

+0

這是爲了防止按下時按鈕突出顯示? – user2303213

+0

我曾嘗試使用您提供的代碼,但現在圖像甚至不顯示。 – user2303213

+0

您是否將按鈕類型設置爲自定義? – wenqi

5

斯威夫特3

yourBtn.setImage(UIImage.init(named: "imagename"), for: .normal) 
1

現在(swift 3版):

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal) 
    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal) 
}