Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add "Vertical Spacing" programmatically in swift

I have an UIImageView that I've added programmatically and a button which has been added in a Storyboard. And now I need to add "Vertical Spacing" between them, but I don't know how to do it. Would be easy if I would have added UIImageView in storyboard:

enter image description here

How can i solve the problem ?

like image 944
Steve Avatar asked Jul 21 '15 15:07

Steve


2 Answers

Let suppose your UIImageView is added in the top as you put in your image above, then you can add constraints programmatically like in the following way:

override func viewDidLoad() {
    super.viewDidLoad()

    // assuming here you have added the self.imageView to the main view and it was declared before. 
    self.imageView.setTranslatesAutoresizingMaskIntoConstraints(false)

   // create the constraints with the constant value you want.
   var verticalSpace = NSLayoutConstraint(item: self.imageView, attribute: .Bottom, relatedBy: .Equal, toItem: self.button, attribute: .Bottom, multiplier: 1, constant: 50)

  // activate the constraints
  NSLayoutConstraint.activateConstraints([verticalSpace])
}

In the above code I only put the vertical space constraints, you need to set the necessary constraints to avoid warnings about it.

There are several ways of adding constraint programmatically you can read more in this very nice answer SWIFT | Adding constraints programmatically.

I hope this help you.

like image 170
Victor Sigler Avatar answered Sep 22 '22 01:09

Victor Sigler


To add a vertical spacing between 2 views programmatically, you can use the following Swift 3 code.

view2 is the top view while view1 of the bottom view.

let verticalSpace = NSLayoutConstraint(item: view1, attribute: .top, relatedBy: .equal, toItem: view2, attribute: .bottom, multiplier: 1, constant: 0)
NSLayoutConstraint.activate([verticalSpace])

Note: You must add the horizontal position for this to work.

like image 44
Eduardo Irias Avatar answered Sep 23 '22 01:09

Eduardo Irias