2017-07-12 8 views
1

Angenommen, ich habe ein Textfeld und eine Schaltfläche. Es gibt einen IBaction-Mitarbeiter mit der Schaltfläche und dem Textfeld.Erstellen Sie Label mit Schaltflächen auf Klicks programmgesteuert zugeordnet

Wenn Sie auf die Schaltfläche klicken, wird eine Beschriftung mit dem eingegebenen Text im Textfeld erstellt. Und erstellen Sie gleichzeitig Schaltflächen neben dem Beschriftungsfeld. (wie Play oder Pause Tasten)

Es ist einfach, ein statisches Element hinzuzufügen, nur per Drag & Drop. Aber ich weiß nicht, wie diese UI-Elemente programmatisch mit Layout und Einschränkungen hinzufügen.

Bitte erzählen Sie mir mehr oder bieten Sie mir einige Links an.

Antwort

1

Es sollte verschiedene Möglichkeiten, um Ihr Ziel zu erreichen. Im Folgenden finden Sie ein Beispiel dafür, wie Sie der Unteransicht Unteransichten hinzufügen, die eine Beschriftung, Schaltflächen und Einschränkungen enthalten. Die Standardwerte textField und button werden im Storyboard hinzugefügt.

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

+0

Dank! Ich werde es bald ausprobieren! – tak

0

Bei Ihren Fragen geht es darum, wie Sie Schaltflächen und Textfelder programmgesteuert erstellen und dann die Einschränkung festlegen. Initiieren Sie zunächst das Oberflächenelement, richten Sie es ein und fügen Sie es Ihrem View-Controller hinzu. Weisen Sie ihm dann eine Einschränkung zu. Meine bevorzugten Constraint-Sets sind Padding oben, Padding links, Ansichtshöhe und Ansichtsbreite.

einen UIButton zum Beispiel Verwenden

let button = UIButton() 
//Set up button, like title, color, etc 

self.view.addSubView(button)//Add the button to the current view 

//Set up constraints 
let margins = view.layoutMarginsGuide 
button.trailingAnchor.constraint(equalTo: margins.trailingAnchor, constant: 0).isActive = true 
button.topAnchor.constraint(equalTo: margins.topAnchor, constant: 70).isActive = true 
button.widthAnchor.constraint(equalToConstant: 100).isActive = true 
button.heightAnchor.constraint(equalToConstant: 30).isActive = true 
Verwandte Themen