ios - ¿Cómo centrar UILabel en Swift?
uikit ios (4)
Estoy tratando de centrar un texto pero no parece estar funcionando.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let title = UILabel()
title.text = "Some Sentence"
title.numberOfLines = 0
title.frame = CGRectMake(self.view.bounds.size.width/2,50,self.view.bounds.size.width, self.view.bounds.size.height) // x , y, width , height
title.textAlignment = .Center
title.sizeToFit()
title.backgroundColor = UIColor.redColor()
self.view.addSubview(title)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Ese es el código que estoy usando pero esto es lo que obtengo:
No es el centro de la pantalla. ¿Alguien puede decirme qué estoy haciendo mal?
Diseño automático
Para hacer que su aplicación sea una prueba de futuro, use anclajes de diseño automático en lugar de establecer el marco.
1. Desactivar la traducción.
titleLabel.translatesAutoresizingMaskIntoConstraints = false
2. Añadir restricciones CenterX y CenterY
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
3. Establezca la alineación del texto de UILabel en el centro
titleLabel.textAlignment = .center
En realidad, lo que estás haciendo es ingresar el texto dentro de UILabel. Lo que quieres hacer es centrar la etiqueta. Para hacerlo puedes hacer:
title.frame.origin = CGPoint(x: x, y: y)
Si quieres centrar la horizontal puedes hacer:
title.frame.origin = CGPoint(x: self.view.frame.width / 2, y: yValue)
Además, si desea centrar los valores xey de su etiqueta, puede hacerlo:
title.frame.origin = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2)
Para centrar un UILabel solo agrega esta fila
X y Y:
title.center = self.view.center
X:
title.center.x = self.view.center.x
y
title.center.y = self.view.center.y
SWIFT 4
Esto funcionó para mí y parece más una prueba de futuro. Esto también funciona para una etiqueta multilínea.
override func loadView() {
self.view = UIView()
let message = UILabel()
message.text = "This is a test message that should be centered."
message.translatesAutoresizingMaskIntoConstraints = false
message.lineBreakMode = .byWordWrapping
message.numberOfLines = 0
message.textAlignment = .center
self.view.addSubview(message)
message.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
message.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
message.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}