Swift: 设置按钮的高度和宽度没有效果
Swift: Setting the height and width of buttons has no effect
我有这个 tabBar,以编程方式创建:
func createTabBar() {
var arrangedSubviews = [UIView]()
if let menus = CMSessionManager.sharedInstance.menus {
for menu_item in menus {
if let menuInfoDetails = menu_item as? [String: Any] {
let tabButton = CustomButton(color: .red, titleString: menuInfoDetails["label"] as! String)
// This apparently has no effect on button size
tabButton.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
arrangedSubviews.append(tabButton)
}
}
stackView.alignment = .leading
stackView = UIStackView(arrangedSubviews: arrangedSubviews)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.distribution = .fillProportionally
stackView.axis = .horizontal
stackView.spacing = 8
self.view.addSubview(stackView)
stackView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 24).isActive = true
stackView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0).isActive = true
stackView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0).isActive = true
}
}
我一直在尝试以编程方式更改按钮大小:
tabButton.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
无论我设置哪个高度或宽度,或 x y 位置,都没有改变。
知道出了什么问题吗?
不直接设置框架,而是使用 AutoLayout(约束):
NSLayoutConstraint.activate([
tabButton.heightAnchor.constraint(equalToConstant: 100),
tabButton.widthAnchor.constraint(equalToConstant: 100)
])
此外,由于您使用的是堆栈视图,因此设置 x
和 y
值将无效,因为它是唯一的堆栈视图作业,可以在适当的位置布置这些视图。由于您在堆栈视图中使用 spacing
,因此设置宽度约束没有意义,因此您应该善于调整此值,并且仅使用高度约束。
NSLayoutConstraint.activate([
tabButton.heightAnchor.constraint(equalToConstant: 100)
])
我有这个 tabBar,以编程方式创建:
func createTabBar() {
var arrangedSubviews = [UIView]()
if let menus = CMSessionManager.sharedInstance.menus {
for menu_item in menus {
if let menuInfoDetails = menu_item as? [String: Any] {
let tabButton = CustomButton(color: .red, titleString: menuInfoDetails["label"] as! String)
// This apparently has no effect on button size
tabButton.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
arrangedSubviews.append(tabButton)
}
}
stackView.alignment = .leading
stackView = UIStackView(arrangedSubviews: arrangedSubviews)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.distribution = .fillProportionally
stackView.axis = .horizontal
stackView.spacing = 8
self.view.addSubview(stackView)
stackView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 24).isActive = true
stackView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0).isActive = true
stackView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0).isActive = true
}
}
我一直在尝试以编程方式更改按钮大小:
tabButton.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
无论我设置哪个高度或宽度,或 x y 位置,都没有改变。
知道出了什么问题吗?
不直接设置框架,而是使用 AutoLayout(约束):
NSLayoutConstraint.activate([
tabButton.heightAnchor.constraint(equalToConstant: 100),
tabButton.widthAnchor.constraint(equalToConstant: 100)
])
此外,由于您使用的是堆栈视图,因此设置 x
和 y
值将无效,因为它是唯一的堆栈视图作业,可以在适当的位置布置这些视图。由于您在堆栈视图中使用 spacing
,因此设置宽度约束没有意义,因此您应该善于调整此值,并且仅使用高度约束。
NSLayoutConstraint.activate([
tabButton.heightAnchor.constraint(equalToConstant: 100)
])