我在故事板中设计了一个UIStackView,并添加了2个UI按钮,高度限制设置为70。 我的堆栈视图设置为垂直填充,并在情节提要上设置了一些约束以适应控制器的视图。
我已经从堆栈视图和UI按钮中添加了一个出口。 我正在尝试在堆栈视图中以编程方式添加第三个 UIButton
@IBOutlet weak var Btn1: UIButton!
@IBOutlet weak var myStackView: UIStackView!
var accounts = [Account]()
override func viewDidLoad() {
super.viewDidLoad()
Btn1.setTitle("Name", for: .normal)
let Btn3 = UIButton(frame: CGRect(x: 0, y: 110, width: 100, height: 50))
Btn3.setTitle("Btn3", for: .normal)
Btn3.heightAnchor.constraint(equalToConstant: 70).isActive = true
myStackView.addArrangedSubview(Btn3)
但 Btn3 从未出现过
好吧,假设您的背景颜色是默认的白色,按钮就在那里,只是很难看到;)。换句话说:它的标题颜色是白色。
尝试设置一些颜色:
Btn3.backgroundColor = UIColor.yellow
Btn3.setTitleColor(UIColor.red, for: .normal)
如果您关心tintColor
,也可以将其创建为系统按钮:
let Btn3 = UIButton(type: .system)
如果使用init(frame:)
创建按钮,则会得到一个自定义按钮,tintColor
文档是这样说的:
此属性对类型为 custom 的按钮没有默认效果。为 自定义按钮,您必须实现与 TintColor 相关的任何行为 你自己。
另外,在使用init(frame:)
初始化按钮时,与其指定一个无意义的框架(无论如何布局都由堆栈视图管理),我建议使用.zero
:
let Btn3 = UIButton(frame: .zero)
关于 Swift 命名约定的最后一点说明:
遵循案例约定。类型和协议的名称是 上骆驼案。其他一切都是较低的驼峰案例。
因此,Btn3
表示一种类型,而btn3
或loginButton
则表示一个变量。请参阅 Swift API 设计指南中的"遵循案例约定"。