【发布时间】:2020-06-17 14:36:36
【问题描述】:
我有一个 UIButtons 数组,我试图将它们添加到水平 UIStackView。这些按钮的数量是动态的,它们可能会变得多到无法显示在屏幕上。
对于我的用例,我想从堆栈视图的左侧添加按钮,同时它们适合屏幕。因此,如果我有 10 个按钮,并且在添加第 5 个按钮后没有足够的空间添加第 6 个按钮,我想在那一刻停下来。
有人知道获得这种行为的好方法吗?
我当前的代码与此类似:
import UIKit
class ViewController: UIViewController {
let items = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven"]
override func viewDidLoad() {
super.viewDidLoad()
let stackView = UIStackView()
stackView.axis = .horizontal
stackView.spacing = 5
view.addSubview(stackView)
for title in items {
let button = UIButton()
button.backgroundColor = .red
button.setTitle(title, for: .normal)
// if button.doesNotFit() {
// break
// }
stackView.addArrangedSubview(button)
}
let spacerView = UIView()
spacerView.setContentHuggingPriority(.defaultLow, for: .horizontal)
stackView.addArrangedSubview(spacerView)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
stackView.heightAnchor.constraint(equalToConstant: 50).isActive = true
}
}
这样,我得到以下结果。问题在于按钮“九”、“十”等......因为它们不适合。我不希望将它们添加到 UIStackView。
【问题讨论】:
-
您是否希望带有空白尾随空格(左对齐)的按钮之间正好有 5 点间距?或者您是否希望按钮以相等(至少 5 分)间距“对齐”?看到这张图片:i.stack.imgur.com/HuyEG.png
-
@DonMag 我愿意实现第一个选项,5px 绝对间距左对齐。
标签: ios swift uikit uistackview