我想将所有样式信息添加到类中,然后子类UIButton以避免重复代码。Swift:将CGSize应用于按钮类不改变
此刻,我的课是这样的:
class CustomButton: UIButton {
required init() {
super.init(frame: .zero)
// set other operations after super.init, if required
backgroundColor = .red
layer.cornerRadius = 5
layer.borderWidth = 1
layer.borderColor = UIColor.black.cgColor
frame.size = CGSize(width: 700, height: 100)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
在viewDidLoad中我加入:
let b1 = CustomButton()
view.addSubview(b1)
// auto layout
b1.translatesAutoresizingMaskIntoConstraints = false
b1.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
b1.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
正如你可以在课堂上看到我已经设置了frame.size
frame.size = CGSize(width: 700, height: 100)
但是,当我运行它时,它看起来像这样:
宽度显然不是。任何建议,我哪里出错了?
在你解释中央按钮布尔和它为什么在那里?我最终会在视图控制器上有不同位置的6个按钮。这个uibutton只针对这个问题。其他人将在屏幕上的radom地方 – JamesG
我已经接受了答案,如果我拿出所有中心的东西,它的工作完美:) – JamesG
把这件事(并理解我张贴未经测试的代码,你可能有更多的代码张贴) ......(1)底线问题是混合帧和约束,同时关闭自动调整大小。我会发布一个编辑到我的答案来解释更多。 (2)您提到 - 我同意 - 避免重复代码。我的尝试不仅是修复特定的问题,而且还要尽可能多地添加到'init'方法中。因此,宽度/高度*和*是否需要每个按钮居中,或者像您指示的那样,而不是。事实上...... – dfd