我有一个tappershite,每当你点击它,一个新的文本字段就会显示出来并保存在一个数组中。
我可以创建多个文本字段并将它们存储在一个数组中,但我不知道如何在视图中显示它们。
目前只有第一个将显示在视图中。
我想建立类似的东西,如snapchat与文本。

var myTextField: UITextField = UITextField(frame: CGRect(x: 0,y: 0, width: 300.0, height:30.0))


func addTapGestureToTextImageView() {
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTextImage))
    textImageView.isUserInteractionEnabled = true
    textImageView.addGestureRecognizer(tapGesture)
}

@objc func handleTextImage() {

    textFields.append(myTextField)
    let myTextField = UITextField(frame: CGRect(x: 0,y: 0, width: 300.0, height:30.0))
    for i in 0..<textFields.count {
        myTextField.tag = i
        view.addSubview(textFields[i])
        print(textFields[i])
    }
    print(textFields.count)
}

最佳答案

如果你想垂直地堆积它们,你必须用每个文本域的高度来增加y值,从而改变它的帧。

for i in 0..<textFields.count {
            var field = textFields[i]
            field.frame = CGRect(x: 0, y: 30*i, width: 300, height: 30)
            view.addSubview(field)
            print(textFields[i])
        }

会像这样。但是你需要调整它来正确地对齐它。
我的建议是在baseView中放置一个UIStackView,然后使用它的addArrangedSubview(),它将为您进行叠加。

10-08 16:21