Позиционные ограничения не имеют никакого эффекта - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь закодировать метку в функции viewDidLoad. Ярлык отображается, но код, который я сейчас использую, не влияет на позиционирование. Я пытаюсь закодировать все в функции viewDidLoad. Вы можете увидеть скриншот ниже.

override func viewDidLoad() {
    super.viewDidLoad()

    let backbutton = UILabel()
    backbutton.backgroundColor = UIColor.orange
    backbutton.translatesAutoresizingMaskIntoConstraints = false
    backbutton.widthAnchor.constraint(equalToConstant: 300).isActive = true
    backbutton.heightAnchor.constraint(equalToConstant: 300).isActive = true
    backbutton.centerXAnchor.constraint(equalTo: backbutton.centerXAnchor, constant: 100).isActive = true
    backbutton.centerYAnchor.constraint(equalTo: backbutton.centerYAnchor, constant: 300).isActive = true
    view.addSubview(backbutton)
}

enter image description here

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Попробуй это !!

 self.view.setNeedsUpdateConstraints()
    self.view.layoutIfNeeded()
0 голосов
/ 12 ноября 2018

Попробуйте вместо этого использовать CGRect:

            let screenWidth = UIScreen.main.bounds.width
            let screenHeight = UIScreen.main.bounds.height
            let xPostion:CGFloat = screenWidth - 150 //150 is half of view's width
            let yPostion:CGFloat = screenHeight - 150 //150 is half of view's height
            let buttonWidth:CGFloat = 300
            let buttonHeight:CGFloat = 300
            backbutton.frame = CGRect(x:xPostion, y:yPostion, width:buttonWidth, height:buttonHeight)

вместо ширины / высоты экрана вы также можете попытаться получить ширину вашего супер-вида, используя:

  self.view.frame.width 
  self.view.frame.height
0 голосов
/ 12 ноября 2018

Вот как вы можете выровнять label в center из view,

let backbutton = UILabel()
view.addSubview(backbutton)

backbutton.backgroundColor = UIColor.orange
backbutton.translatesAutoresizingMaskIntoConstraints = false
backbutton.widthAnchor.constraint(equalToConstant: 300).isActive = true
backbutton.heightAnchor.constraint(equalToConstant: 300).isActive = true
backbutton.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
backbutton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true

Когда вы устанавливаете constraints программно, убедитесь, что вы добавили view в super/parent view перед применением constraints. Во-вторых, в приведенных ниже строках вы говорите метке backButton, чтобы выровняли ее центр относительно себя (то есть backbutton.centerXAnchor.constraint (equalTo: backbutton.centerXAnchor ).

)
backbutton.centerXAnchor.constraint(equalTo: backbutton.centerXAnchor, constant: 100).isActive = true
backbutton.centerYAnchor.constraint(equalTo: backbutton.centerYAnchor, constant: 300).isActive = true

Поскольку вы хотите выровнять его по центру vertically и horizontally относительно его parent view, вам следует установить center constraints равным parent view, как показано ниже,

backbutton.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
backbutton.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true

enter image description here

...