[英]creating UI components based on array values swift
我有一个字符串数组,对于每个字符串值,我想创建一个UILabel来显示文本,这意味着如果数组中有10个字符串,我想有10个带有字符串名称的标签。 我正在执行此programmaticalyy,但由于此方法无效,因此未显示任何内容。 这就是我尝试过的
let const: [String] = ["Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer"]
var checkBox: BEMCheckBox!
var checkLabel: DefaultLabel!
var checkboxStack: DefaultStackView?
fileprivate func setupButton() {
const.forEach { (title) in
checkBox = BEMCheckBox()
checkBox.translatesAutoresizingMaskIntoConstraints = false
checkBox.tintColor = UIColor.ZAMA.offWhite
checkBox.onCheckColor = UIColor.ZAMA.primary
checkBox.onFillColor = UIColor.ZAMA.tabColor
checkBox.onTintColor = UIColor.ZAMA.primary
checkBox.onAnimationType = .flat
checkBox.heightAnchor.constraint(equalToConstant: 25).isActive = true
checkBox.widthAnchor.constraint(equalToConstant: 25).isActive = true
checkLabel = UILabel()
checkLabel.text = title
checkLabel.textColor = .black
checkLabel.fontSize = 15
checkboxStack = UIStackView(arrangedSubviews: [centralCoolingCheckbox, centralCoolingText])
checkboxStack?.axis = .horizontal
checkboxStack?.spacing = 4
checkboxStack?.alignment = .fill
checkboxStack?.distribution = .fill
}
}
fileprivate func layout() {
view.addSubview(scrollView)
hideKeyboardWhenTappedAround()
setupButton()
stack = UIStackView(arrangedSubviews: [checkboxStack ?? DefaultStackView()])
stack.axis = .vertical
stack.distribution = .fillEqually
stack.spacing = 8
view.addSubview(stack)
stack.anchor(top: contentView.topAnchor, left: contentView.leftAnchor, bottom: nil, right: contentView.rightAnchor, paddingTop: 4, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0, enableInsets: false)
}
然后在viewDidLoad中调用layout()
你可以尝试像
没有ScrollView
class ViewController: UIViewController {
let const = ["Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let st = UIStackView()
st.axis = .vertical
st.alignment = .center
st.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(st)
NSLayoutConstraint.activate([
st.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
st.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
st.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor)
])
const.forEach {
let lbl = UILabel()
lbl.text = $0
st.addArrangedSubview(lbl)
}
}
}
使用ScrollView
class ViewController: UIViewController {
let const = ["Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer","Central Cooling Unit", "Split Cooling Unit", "Oven", "Refridgerator", "Dish Washer"]
let scroll = UIScrollView()
let st = UIStackView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
st.axis = .vertical
st.alignment = .center
scroll.translatesAutoresizingMaskIntoConstraints = false
st.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scroll)
scroll.addSubview(st)
NSLayoutConstraint.activate([
scroll.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
scroll.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
scroll.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
scroll.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
st.widthAnchor.constraint(equalTo: self.view.widthAnchor),
st.leadingAnchor.constraint(equalTo: self.scroll.leadingAnchor),
st.trailingAnchor.constraint(equalTo: self.scroll.trailingAnchor),
st.topAnchor.constraint(equalTo: self.scroll.topAnchor),
st.bottomAnchor.constraint(equalTo: self.scroll.bottomAnchor)
])
const.forEach {
let lbl = UILabel()
lbl.text = $0
st.addArrangedSubview(lbl)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.