2017-04-18 8 views
1

Also, ich habe eine UILabel und ich möchte es in Sicht zentrieren, ich habe buchstäblich alles versucht, Center, Autolayout aus, Rahmen, Grenzen, ConvertPoint, Ankerpunkt, Integral und es wählt immer noch die oben links als Mittelpunkt zeigen.UILabel nicht zentriert

Dies ist einer meiner Versuche:

let label: UILabel = UILabel() 
label.text = "Search" 
DispatchQueue.main.async { 
    self.label.sizeToFit() 
} 
label.center = view.center 
view.addSubview(label) 
+0

Haben Sie versucht, eine bestimmte Position mit z. B. label.frame (...) anzugeben? Warum brauchst du die dispatchQueue für sizeToFit()? –

+0

Ja, ich habe es versucht. Nun, nicht mit DispatchQueue gemacht sizeToFit() funktioniert nicht. – user7861999

+0

Offenbar löste das Setzen von 'label.center = view.center' in DispatchQueue das Problem – user7861999

Antwort

2

.center verwenden, wenn Sie die Subview hinzufügen für die meisten Fälle funktionieren wird, aber nicht, wenn der Bildschirm je gedreht wird oder die Grenzen Änderung der übergeordneten Ansicht.

Wenn Sie das automatische Layout verwenden, erledigt das System all dies für Sie, und Sie können Ihr gesamtes Layout relativ beschreiben, so dass es auf jeder Bildschirmgröße in jeder Ausrichtung funktioniert.

//: Playground - noun: a place where people can play 

import UIKit 
import PlaygroundSupport 

let parentView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 320.0, height: 320.0)) 
parentView.backgroundColor = .white 

PlaygroundPage.current.liveView = parentView 

let label = UILabel() 
label.text = "Center" 
label.translatesAutoresizingMaskIntoConstraints = false 
parentView.addSubview(label) 
label.centerXAnchor.constraint(equalTo: parentView.centerXAnchor).isActive = true 
label.centerYAnchor.constraint(equalTo: parentView.centerYAnchor).isActive = true