【问题标题】:Swift Button Background Image not appearing?Swift按钮背景图像没有出现?
【发布时间】:2017-01-31 10:40:58
【问题描述】:

我有一些非常简单的代码来以编程方式将按钮的背景图像设置为某些东西,但是当模拟器运行时它什么也不显示。然而,在情节提要上,它显示图像存在,但什么也没有显示。

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 文件夹中。

【问题讨论】:

  • 你能分享示例项目吗?
  • 旁注 - LetUsOutlet 似乎是该按钮的一个非常糟糕的名称,并且还违反了典型的命名约定。当我阅读self.LetUsOutlet 时,我不知道我在看什么,必须阅读声明才能理解。如果取而代之的是 createMealButton 之类的首字母小写,则将遵循典型的命名约定,并且无论在何处引用它都会更加清晰。变量和函数名称应以小写字母开头。

标签: ios swift xcode uibutton uiimage


【解决方案1】:

要更改按钮背景图像,您应该使用

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

【讨论】:

    【解决方案2】:

    我模拟了一个示例 - 对我来说似乎没问题。我建议您在 IB 中检查按钮的约束

    【讨论】:

    • 您能详细说明一下吗?我将按钮限制在视图的侧面和顶部,但它仍然没有提供图像输出。
    • 我只做了 4 个约束(顶部、底部、左侧和右侧)——听起来你可以接受。检查您的图像文件名(我也讨厌带有空格的图像名称)并确保您已将其添加到 Assets.xcassets 文件夹中?
    【解决方案3】:

    改变这一行

    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)
    

    【讨论】:

    • 等一下,我会写一些建议
    • 1-确保图像名称正确,区分大小写,同时从代码中删除扩展名,2-确保出口正确链接到视图控制器中的 IBOutlet var(到这样做,当您在故事板中选择按钮时转到连接检查器,并确保按钮名称仅连接一次到您的视图控制器下引用插座),告诉我您是否仍然难以实现这一点
    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多