2017-09-10 2 views
1

Ich möchte eine einfache App ohne Storyboard erstellen. Ich habe eine Schließung außerhalb der viewDidLoad Methode erstellt, die einen Titel auf dem Bildschirm darstellt. Mein Problem ist, dass der Code doppelte Zeilen enthält view.addSubview(label) und es positioniert das Etikett an den falschen Ort.Verschlüsse AußenansichtDidLoad

Könnten Sie mir bitte helfen, dieses Problem zu lösen?

class HomeVC: UIViewController { 
    let titleLabel: UILabel = { 
     let view = UIView() 
     let label = UILabel() 
     label.translatesAutoresizingMaskIntoConstraints = false 
     view.addSubview(label) 
     label.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
     label.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true 
     label.text = "Hello" 
     return label 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.addSubview(titleLabel) 
    } 
} 

Antwort

2

Ich glaube, Sie das Label in der Mitte des HomeVC Ansicht einstellen mögen, das Problem in dem obigen Code ist, dass Sie eine neue Ansicht machen und das Etikett in der Ansicht platzieren und das ist nicht das, was Sie wollen, so

Sie haben soeben Etikett zuerst wie diese machen:

let titleLabel: UILabel = { 

      let label = UILabel() 
      label.translatesAutoresizingMaskIntoConstraints = false 

      label.text = "Hello" 
      return label 
     }() 

und dann in viewDidLoad dieses Label als Subview-Ansicht und Einschränkungen gelten

override func viewDidLoad() { 
    super.viewDidLoad() 
     view.addSubview(titleLabel) 
     setupTitleLabel() 
} 

func setupTitleLabel() { 
     titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
     titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true 
     //you also need to give the label height and width constraints to label here... 
} 
+0

Vielen Dank für Ihre Antwort. Es funktioniert, ich wollte nur minimalen Code in ViewDidLoad hinzufügen. –