Search code examples
swiftautolayoutconstraintsnslayoutconstraint

constrain imageview to 10 percent of area with space between top and leading anchor


I want to constraint my imageview to be spaced with a 20 percent gap from the leading anchor and 20 percent gap from the top anchor. You can see what I am looking for in the photo below. Somehow with the topAnchor and leadingAnchor we need to account for a 20 percent gap.

enter image description here

    var blueMove = UIImageView()


    override func viewDidLoad() {
        super.viewDidLoad()



        NSLayoutConstraint.activate([
            blueMove.topAnchor.constraint(equalTo: view.topAnchor, constant : 0),
             blueMove.heightAnchor.constraint(equalTo: view.heightAnchor, constant : 0),
           blueMove.widthAnchor.constraint(equalTo: view.widthAnchor, constant : 0),     
           blueMove.leadingAnchor.constraint(equalTo: view.leading, constant :0)

        ])


    }
    }

Solution

  • Try

    self.blueMove.translatesAutoresizingMaskIntoConstraints = false // don't forget this line 
    let percent = self.view.frame.width * 0.2 // 20% with 0.2 , 10% with 0.1
    NSLayoutConstraint.activate([
      blueMove.topAnchor.constraint(equalTo: view.topAnchor, constant :percent),
      blueMove.heightAnchor.constraint(equalToConstant:200),
      blueMove.widthAnchor.constraint(equalToConstant:200),     
      blueMove.leadingAnchor.constraint(equalTo: view.leading, constant :percent) 
    ])