Текст в поле зрения по центру — не центрируется

#ios #swift

#iOS #swift

Вопрос:

Я создаю Swift Playground и хотел бы расположить метку по центру. Однако, когда я это сделаю, label.center = view.center текст переместится в странное место, как показано на этом скриншоте . (Это тот, который находится в крайнем правом углу; остальные расположены по центру с помощью CGPoints.) Вот viewDidLoad, касающийся моего представления и метки:

 override func viewDidLoad() {
    view.backgroundColor = UIColor(red: 186/255.0, green: 198/255.0, blue: 196/255.0, alpha: 1.0)
    view.layer.borderWidth = 1
    view.layer.borderColor = UIColor(red:222/255, green:225/255, blue:227/255, alpha: 1).cgColor
    label = UILabel(frame: .init(x: 0, y: 0, width: 200, height: 200))
    label.textAlignment = .center
    label.text = "To play, make the gestures that the app speaks and then press the green check when you are done."
    label.numberOfLines = 0
    label.font = font
    label.center = view.center
    label.textColor = UIColor(red:102/255, green: 121/255, blue: 118/255, alpha: 1.0)
    view.addSubview(self.label)
  

Другие люди говорили, что это работало на их компьютерах, но я пробовал на 2 разных компьютерах Mac, и это не сработало. Поскольку я работаю с игровыми площадками, я не могу использовать раскадровку. Любая помощь была бы высоко оценена.

Ответ №1:

Поскольку со временем, которое viewDidLoad называется views, размеры изменяются неправильно, вам нужно центрировать надпись, когда это происходит. Например, в viewDidLayoutSubviews

 override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    label.center = view.center
}