ios - 以编程方式创建与点击按钮关联的标签

标签 ios swift uiview uielement

假设我有一个文本框和一个按钮。 有一个 IBaction 与按钮和文本字段关联。

单击该按钮时,它将创建一个标签,其中包含在文本字段中键入的文本。同时在标签字段旁边创建按钮。 (如播放或暂停按钮)

添加静态元素很容易,只需拖放即可。 但我不知道如何使用布局和约束以编程方式添加这些 UI 元素。

请告诉我更多相关信息或提供一些链接给我。

最佳答案

应该有多种方法可以实现您的目标。以下示例说明如何向 subview 添加包含标签和按钮以及约束的 subview 。 Storyboard中添加了默认的 textFieldbutton

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var button: UIButton!

    var lastY: CGFloat = 100

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func buttonClicked(_ sender: UIButton) {
        let contentView = UIView()
        addViewsTo(contentView)
        contentView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(contentView)

        // Add size constraints to the content view (260, 30)
        NSLayoutConstraint(item: contentView, attribute: .width, relatedBy: .equal,
                           toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 260.0).isActive = true
        NSLayoutConstraint(item: contentView, attribute: .height, relatedBy: .equal,
                           toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 30.0).isActive = true
        // Add position constraints to the content view (horizontal center, 100 from the top)
        NSLayoutConstraint(item: contentView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1.0, constant: lastY).isActive = true
        NSLayoutConstraint(item: contentView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1.0, constant: 0.0).isActive = true

        // Update last Y position to have the gaps between views to be 10
        lastY += 40
    }

    // Add label and button to the content view
    func addViewsTo(_ contentView: UIView) {
        // Add a label with size of (100, 30)
        let label = UILabel()
        label.text = textField.text
        label.frame = CGRect(x: 0.0, y: 0.0, width: 100.0, height: 30.0)
        contentView.addSubview(label)

        // Add a button with size of (150, 30)
        let button = UIButton()
        button.setTitle("Button of \(textField.text ?? "")", for: .normal)
        button.setTitleColor(.blue, for: .normal)
        button.layer.borderWidth = 1
        button.layer.borderColor = UIColor.black.cgColor
        button.frame = CGRect(x: 110.0, y: 0.0, width: 150.0, height: 30.0)
        contentView.addSubview(button)        
    }
}

enter image description here

关于ios - 以编程方式创建与点击按钮关联的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047403/

相关文章:

iOS - 在不规则区域内绘制

ios - 选中后,可以在UITableViewCell上设置高度变化的动画吗?

iphone - 我如何验证用户安装了 iPhone 应用程序?

ios - 防止重新加载已报告的评论

ios - 我如何告诉自定义 UIView 与 UITextField 接收触摸事件

ios - 如何在不知道它是哪个 View 的情况下将 UIView 添加为最顶层 View 的 subview ?

ios - 在一个 UICollectionView 中实现两个 CollectionView 布局

iphone - 将 NSMutableArray 存储在 NSArray 中?

ios - Swift- EXC_CRASH (SIGABRT) 如何使用此堆栈跟踪查找异常

ios - 快速保存和检索 UserDefaults 中的自定义对象