gpt4 book ai didi

ios - 使用约束以编程方式排列按钮

转载 作者:搜寻专家 更新时间:2023-11-01 06:31:58 25 4
gpt4 key购买 nike

我有一个按钮数组,我正在遍历这些按钮并将它们添加到 View 中。每个按钮都应与前一个按钮相邻,因此我将前导约束设置为前一个按钮的尾随。但是按钮最终会层叠在一起,只显示最上面的按钮。

for k in 0 ..< buttons.count {

view.addSubview(buttons[k])

if k > 0 {
buttons[k].leadingAnchor.constraint(equalTo: buttons[k-1].trailingAnchor).isActive = true
}
}

编辑:

我不知道这是否是问题的一部分,但这是我创建按钮的方式。我将每个设置为 (0,0) 因为我不知道它们最终会在哪里。我假设约束会根据需要重新定位它们(​​第一次使用编程约束)。

let size = CGRect(x: 0, y: 0, width: buttonWidth, height: buttonHeight)
let button: UIButton = UIButton(frame: size)

最佳答案

这是一个使用 UIStackView 的简单 Playground 。您可以玩一下并适应您的目标。

UIStackView 如果您想避免手动创建约束,它们是非常灵活的组件。

//: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport

class MyViewController: UIViewController {

override func loadView() {
let view = UIView()
view.backgroundColor = .white

let buttons = createButtons()
let stackView = createStackView(with: UILayoutConstraintAxis.vertical)

buttons.forEach { button in
stackView.addArrangedSubview(button)
}

view.addSubview(stackView)

stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
self.view = view
}

func createStackView(with layout: UILayoutConstraintAxis) -> UIStackView {
let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = layout
stackView.distribution = .equalSpacing
stackView.spacing = 0
return stackView
}

func createButtons() -> [UIButton] {
var buttons = [UIButton]()
for x in 0..<5 {
let button = UIButton(type: .custom)
button.backgroundColor = .red
button.translatesAutoresizingMaskIntoConstraints = false
button.widthAnchor.constraint(equalToConstant: 50).isActive = true
button.heightAnchor.constraint(equalToConstant: 100).isActive = true
button.setTitle("Title \(x)", for: .normal)
buttons.append(button)
}
return buttons
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

关于ios - 使用约束以编程方式排列按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com