Programmatically creating constraints bound to view controller margins

前端 未结 3 1257
广开言路
广开言路 2020-12-08 21:32

I\'m trying to make a view that will act as a sort of \"panel\", attached to the right side of the view controller.

That is, it is bound to the trailing, top, and b

3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-08 22:03

    Actually the problem in your code is that you did not set the translatesAutoresizingMaskIntoConstraints of myview to false, whenever you want to use auto-layout constraints then you have to set translatesAutoresizingMaskIntoConstraints of a view to false. Another Problem is that you do not add myview on self.view I have updated your code and Its working fine According your constraints.

    Put below code in your ViewController .

    let myView = UIView()
    myView.backgroundColor = UIColor.redColor()
    self.view.addSubview(myView)
    myView.translatesAutoresizingMaskIntoConstraints = false
    
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .Top, relatedBy: .Equal, toItem: self.topLayoutGuide, attribute: .Bottom, multiplier: 1, constant: 0))
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .Bottom, relatedBy: .Equal, toItem: self.bottomLayoutGuide, attribute:.Top, multiplier: 1, constant: 20))
    
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute,multiplier: 1, constant: 300))
    view.addConstraint(NSLayoutConstraint(item: myView, attribute: .TrailingMargin, relatedBy: .Equal, toItem: view, attribute: .TrailingMargin, multiplier: 1, constant: 0))
    

提交回复
热议问题