如何为Interface Builder创建的UIButton添加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
相关产品推荐
相关产品推荐

