Arrays Swift-如何动态创建标签

Arrays Swift-如何动态创建标签,arrays,swift,arraylist,uilabel,Arrays,Swift,Arraylist,Uilabel,我创建了一些代码,可以读取数组,并将每个索引的数据保存到变量中,然后将这些变量传递到创建的标签上 代码如下: 数据arr内容示例: [2,5,5,1]数组中的两个索引 for i in 0..<dataArr.count { let element = dataArr[i] let labelNum = UILabel() label split = element.components(separatedBy: ",") let num1 = split[0] let num2 = s

我创建了一些代码,可以读取数组,并将每个索引的数据保存到变量中,然后将这些变量传递到创建的标签上

代码如下: 数据arr内容示例: [2,5,5,1]数组中的两个索引

for i in 0..<dataArr.count {
let element = dataArr[i]
let labelNum = UILabel()
label split = element.components(separatedBy: ",")

let num1 = split[0]
let num2 = split[1]

let num1Nnum2 = "number 1 :" + num1 + " number 2:" + num2
labelnum.text = num1Nnum2
labelnum.textAlignment = .center
labelnum.frame = CGRect( x:10, y:90, width:250, height: 80)
self.view.addSubview(labelnum)

}
如何创建它,以便在第二次创建标签时,当它读取索引[1]时,它会创建具有相同代码的新标签,但会将标签放在第一个标签下。我曾尝试:

labelnum[i]尝试使用index的值创建新标签,例如当i=1时labelnum1


任何帮助都将不胜感激。

创建一个变量以保持标签的Y位置。在每次迭代中,在Y位置变量中添加上一个标签的高度,以将新标签放置在上一个标签的下方

class ViewController: UIViewController {

let dataArr = ["2,5","5,1"]
override func viewDidLoad() {
    super.viewDidLoad()
    var yPos = 90
    for i in 0..<dataArr.count {
        let element = dataArr[i]
        let labelNum = UILabel()
        let split = element.components(separatedBy: ",")

        let num1 = split[0]
        let num2 = split[1]

        let num1Nnum2 = "number 1 :" + num1 + " number 2:" + num2
        labelNum.text = num1Nnum2
        labelNum.textAlignment = .center
        labelNum.frame = CGRect( x:10, y:yPos, width:250, height: 80)
        yPos += 80
        self.view.addSubview(labelNum)

    }

}

创建一个变量以保持标签的Y位置。在每次迭代中,在Y位置变量中添加上一个标签的高度,以将新标签放置在上一个标签的下方

class ViewController: UIViewController {

let dataArr = ["2,5","5,1"]
override func viewDidLoad() {
    super.viewDidLoad()
    var yPos = 90
    for i in 0..<dataArr.count {
        let element = dataArr[i]
        let labelNum = UILabel()
        let split = element.components(separatedBy: ",")

        let num1 = split[0]
        let num2 = split[1]

        let num1Nnum2 = "number 1 :" + num1 + " number 2:" + num2
        labelNum.text = num1Nnum2
        labelNum.textAlignment = .center
        labelNum.frame = CGRect( x:10, y:yPos, width:250, height: 80)
        yPos += 80
        self.view.addSubview(labelNum)

    }

}
iOS中有一个UIStackView,允许您在现有视图的底部或顶部动态添加元素。始终可以添加自动显示在视图底部的新标签。您也可以使用UITableView或UIScrollView来完成这一点

下面是UIStackView的一个示例,它在前一个标签的下方动态添加新标签。我希望您能在您的用例中推断出这一点

class ViewController: UIViewController {

    var lastLabelCount = 0

    var stackView: UIStackView!

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        let tap = UITapGestureRecognizer(target: self,
                                         action: #selector(tapped))
        view.addGestureRecognizer(tap)
        createViews()
    }

    func createViews() {
        stackView = UIStackView(frame: .zero)
        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.axis = .vertical
        stackView.alignment = .top
        view.addSubview(stackView)

        NSLayoutConstraint.activate([
            stackView.leftAnchor.constraint(equalTo: view.leftAnchor),
            stackView.rightAnchor.constraint(equalTo: view.rightAnchor),
            stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            ])
    }

    @objc func tapped() {
        let label = UILabel(frame: .zero)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = UIColor.black
        label.text = "Hi I am label \(lastLabelCount)"
        stackView.addArrangedSubview(label)

        lastLabelCount += 1
    }
}
iOS中有一个UIStackView,允许您在现有视图的底部或顶部动态添加元素。始终可以添加自动显示在视图底部的新标签。您也可以使用UITableView或UIScrollView来完成这一点

下面是UIStackView的一个示例,它在前一个标签的下方动态添加新标签。我希望您能在您的用例中推断出这一点

class ViewController: UIViewController {

    var lastLabelCount = 0

    var stackView: UIStackView!

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        let tap = UITapGestureRecognizer(target: self,
                                         action: #selector(tapped))
        view.addGestureRecognizer(tap)
        createViews()
    }

    func createViews() {
        stackView = UIStackView(frame: .zero)
        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.axis = .vertical
        stackView.alignment = .top
        view.addSubview(stackView)

        NSLayoutConstraint.activate([
            stackView.leftAnchor.constraint(equalTo: view.leftAnchor),
            stackView.rightAnchor.constraint(equalTo: view.rightAnchor),
            stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            ])
    }

    @objc func tapped() {
        let label = UILabel(frame: .zero)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = UIColor.black
        label.text = "Hi I am label \(lastLabelCount)"
        stackView.addArrangedSubview(label)

        lastLabelCount += 1
    }
}