以编程方式设置 UIButton 的背景不起作用

Setting the background of an UIButton programmatically not working

我只是想简单地设置按钮的背景图像,但无论我尝试什么,都无济于事。我还在那里放了一个 UIImageView 以查看图像文件是否有任何问题,但图像视图设置得非常好。我必须在按钮的属性中设置一些东西吗?

这里是代码:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let imageToSet = UIImage(named: "3-1")
        
        b1.setBackgroundImage(imageToSet, for: .normal)
        
        imageView.image = imageToSet
    }

    @IBOutlet weak var b1: UIButton!
    @IBOutlet weak var imageView: UIImageView!
}

这些是我对按钮的设置:

在Xcode13中,UIButton有四种类型Plain,Grain,Tinted,Filled。当你在故事板中创建一个按钮时,按钮类型自动设置为Plain,这意味着新的UIButton配置已打开(如果您设置其中之一 4)。因此,当您尝试使用像

这样的旧行为时
setBackgroundImage(..)
setImage(..)

这个功能不会影响这个按钮。所以如果你想使用旧的行为,你需要将样式 Plain 设置为 Default