ios swift uilabel

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 }