Программно заданное положение элемента Swift

У меня есть метка, определенная в Storyboard, и я пытаюсь изменить ее положение на основе программной. На SO уже есть некоторые существующие вопросы, которые, похоже, решают эту проблему, но ни одно из решений не работает (т. Е. Метка не перемещается). Я удалил все существующие ограничения на ярлык безрезультатно. Я пробовал:

class LandingViewController: UIViewController { @IBOutlet weak var titleLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() titleLabel.frame = CGRectMake(100, 25, titleLabel.frame.size.width, titleLabel.frame.size.height) } 

Я также пробовал

titleLabel.center = CGPointMake(120, 150)

вместо titleLabel.frame

Я что-то упускаю?

При использовании AutoLayout представления, созданные в раскадровках с ограничениями, имеют свой translatesAutoresizingMaskIntoConstraints СвойствоAutoresizingMaskIntoConstraints имеет значение false , в отличие от программ, созданных программно. Это связано с тем, что конструктор интерфейса ожидает, что ограничения будут полностью определять макет этого представления.

Чтобы вручную изменить фрейм / рамки / центр, установите для этого свойства значение true в коде. Это приведет к тому, что макет представления будет выглядеть так, как это было в дни перед AutoLayout, поэтому имейте в виду, что любые ограничения, которые вы указываете в представлении, могут конфликтовать или вести себя неожиданно, если вы просто укажете это свойство, когда вы действительно хотите, чтобы это было изложенные с использованием ограничений.

Я бы посоветовал вам сначала рассмотреть, действительно ли то, что вы на самом деле хотите сделать, это указать позицию вашего лейбла с помощью ограничений AutoLayout. В наши дни редко бывает, что вы действительно хотите указать позицию вручную, как вы это делали выше.

Вы хотите центрировать этикетку в соответствии с размером экрана? если да, попробуйте ниже (обратите внимание, что UIlabel создается программно)

  var tempLabel:UILabel override func viewDidLoad() { super.viewDidLoad() //gets screen frame size var fm: CGRect = UIScreen.mainScreen().bounds //creates a temp UILabel tempLabel = UILabel(frame: CGRectMake(0, fm.frame.size.height, fm.size.width, fm.size.height)) //aligns the UIlabel to center tempLabel.textAlignment = NSTextAlignment.Center //adding UIlabel to view view.addSubview(tempLabel) } 
Interesting Posts
Давайте будем гением компьютера.