2016-09-22 76 views
0

我有一些非常簡單的代碼,只是編程設置一個按鈕的背景圖像的東西,但是當模擬器運行它什麼也沒有顯示。在故事板上,它顯示圖像存在,然而沒有任何顯示。Swift Button背景圖片沒有出現?

class ViewController: UIViewController { 

@IBOutlet weak var LetUsOutlet: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let backgroundColor = UIColor(red: 0, green: 255, blue: 247, alpha: 1) 
    self.view.backgroundColor = backgroundColor 
    let backgroundButtonImage = UIImage(named: "round rectangle button.png") as UIImage? 
    self.LetUsOutlet.setImage(backgroundButtonImage, for: .normal) 
} 

@IBAction func LetUsCreateMeal(_ sender: UIButton) { 
} 
@IBAction func CreateYourOwn(_ sender: UIButton) { 
} 
@IBAction func BrowseItems(_ sender: UIButton) { 
} 
@IBAction func ViewYourMeals(_ sender: UIButton) { 
} 

} 

這是我有的簡單代碼,所以我不確定它爲什麼不能正常工作。以下是我的故事板。

http://imgur.com/gallery/c5EWW

第一個按鈕是我嘗試以編程方式設置背景,和其他3是當我剛剛設置的故事板中的背景圖片屬性。

這是運行時發生的情況,顯示所有背景圖像都是空的。

http://imgur.com/gallery/urM25

任何幫助表示讚賞。

編輯:我似乎有圖像存儲在錯誤的地方,我把它放在一個單獨的文件夾,而不是在xassets文件夾。

+0

你可以分享示例項目? –

+0

Side comment - LetUsOutlet看起來像是那個按鈕的一個很不好的名字,並且打破了典型的命名約定。當我讀'self.LetUsOutlet'時,我不知道我在看什麼,並且必須閱讀該聲明才能理解。如果它是用小寫的第一個字母代替'createMealButton',那麼它會遵循典型的命名約定,並且在引用它的任何地方都更清晰。變量和函數名稱應以小寫字母開頭。 – Mike

回答

0

我嘲笑了一個例子 - 似乎對我來說還好。我建議你檢查你的按鈕的約束IB

Mock up

+0

你能詳細談談這個嗎?我將按鈕限制在視圖的邊和頂部,但仍然沒有輸出圖像。 –

+0

我只是做了4個約束(頂部,底部,左側和右側) - 聽起來像你會和你一樣好。檢查你的圖像文件名稱(我也有寵物討厭圖像名稱與空格),並確保你已經將它添加到Assets.xcassets文件夾? –

0

改變這一行

let backgroundButtonImage = UIImage(named: "round rectangle button.png") as UIImage? 

這一行

let backgroundButtonImage = UIImage(named: "round rectangle button") 

這行

self.LetUsOutlet.setImage(backgroundButtonImage, for: .normal) 

這個

self.LetUsOutlet.setBackgroundImage(backgroundButtonImage, for: .normal) 
+0

這對我沒有用,還有其他建議嗎? –

+0

堅持,我會寫一些建議 –

+0

1-確保圖像名稱是正確的,區分大小寫,也從代碼中刪除擴展名,2-確保插座正確鏈接到它的IBOutlet VAR在你的視圖控制器(要做到這一點,當在故事板中選擇按鈕時,轉到連接檢查器,並確保按鈕名稱僅連接到您的視圖控制器下的引用插座),告訴我如果您仍然難以實現此目的 –

1

要更改按鈕的背景圖片,你應該使用

LetUsOutlet.setBackgroundImage(UIImage(named:"round rectangle button.png"), forState: UIControlState.Normal)