You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Interface Builder创建的UIButton添加UIButton.Configuration配置?

为Interface Builder创建的按钮设置UIButton.Configuration

我原本按照教程,通过代码创建按钮时,使用UIButton.Configuration配置样式完全正常:

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        createButton()

    }
    
    func createButton(){
        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
        button.center = view.center
        button.configuration = createConfig()
        view.addSubview(button)
    }
        
    func createConfig() -> UIButton.Configuration {
        var config = UIButton.Configuration.filled()
        config.baseBackgroundColor = .systemRed
        config.image = UIImage (named: "binoculars")
        config.cornerStyle = .large
        config.titleAlignment = .center
        return config
    }
}

但我的需求是给通过Interface Builder创建并嵌入在UIStackView中的已有按钮应用同样的配置。我尝试用IBOutlet关联这些按钮,但一开始完全没效果,而且我不想通过代码重新创建UIStackView和布局按钮。

后来发现问题所在:我把IBOutlet的声明写在了viewDidLoad方法内部,将它移到ViewController类的属性区域后,一切正常运行。以下是修正后的代码:

class ViewController: UIViewController {
    
    @IBOutlet weak var button: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        button.configuration = createConfig()
    }
        
    func createConfig() -> UIButton.Configuration {
        var config = UIButton.Configuration.filled()
        config.baseBackgroundColor = .systemRed
        config.image = UIImage (named: "binoculars")
        config.cornerStyle = .large
        config.titleAlignment = .center

        return config
    }
    
}

内容的提问来源于stack exchange,提问作者rattletrap99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:45:30