Как центрировать UILabel в Swift?
Я пытаюсь центрировать текст, но он, похоже, не работает.
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.
}
}
это код, который я использую, но это то, что я получаю:
это не центр экрана. Может кто подскажет что я делаю не так?
4 ответов
чтобы центрировать UILabel просто добавьте эту строку
x и y:
title.center = self.view.center
x:
title.center.x = self.view.center.x
y:
title.center.y = self.view.center.y
Автоматический Макет
чтобы сделать ваше приложение будущим доказательством, используйте автоматические якоря макета вместо установки рамки.
1. Отключить translatesAutoresizing
titleLabel.translatesAutoresizingMaskIntoConstraints = false
2. Добавить ограничения CenterX & CenterY
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
3. Установите выравнивание текста UILabel в центр
titleLabel.textAlignment = .center
на самом деле то, что вы делаете, это ввод текста внутри UILabel. То, что вы хотите сделать, это центрировать ярлык. Для этого вы можете сделать:
title.frame.origin = CGPoint(x: x, y: y)
Если вы хотите центрировать по горизонтали можно сделать:
title.frame.origin = CGPoint(x: self.view.frame.width / 2, y: yValue)
также, если вы хотите центрировать значение x и y вашей метки, Вы можете сделать:
title.frame.origin = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2)
SWIFT 4
это работает для меня и, кажется, более перспективное. Это также работает для многострочных меток.
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
}