Autolayout: origin and size should change according to width and height factor

Mayank Jain picture Mayank Jain · Feb 14, 2015 · Viewed 9k times · Source

Here is a scenario what I needed.

I have put a UIButton on IB (size iPhone4 inch) whose initial frame on IB is x:100,y:100,w:100,h:100. I want the origins and height should change according to device size. for example the width and height of iPhone6 is 375X667, hence the width factor (375/320=1.1718) and height factor (667/568=1.1742). In this scene I want to change my buttons origin X and width with multiply by width factor (1.1718) and origin Y and height with multiply by height factor (1.1782). In this case my button should be shown on x:100X1.1718, y:100X1.1742, w:100X1.1718, h:100X1.1742 .

same thing is needed for iPhone6+.

enter image description here

I can easily achieve this by setting This autoresizing masks. How can I achieve the same by using autolayout? What step should I follow, what constraints should I apply?

My previous question on this

I am attaching some screenshots what i needed by using Autolayout (Achieved with autoresizing mask shown in above image).

I am attaching some screenshots what i needed by using autoresizing.

enter image description here

enter image description here

enter image description here

My Try:-

Step1:- Take a button of size 100X100 on IB. set its X=100 and y=100. enter image description here Step2:- applied this constraints. enter image description here enter image description here enter image description here enter image description here enter image description here

Answer

Dhaivat Vyas picture Dhaivat Vyas · Feb 26, 2015

As pre your question you can set this constraints to your UIButton.


You are not required to change the constraint which you have set for height and width of UIButton.


1.) You need to set horizontal space to Button.Leading and Superview.Trailing.

Set constant=0, Priority=1000 and Multiplier=100:320 as I've set in below image.

enter image description here


2.) You need to set horizontal space to Button.Top and Superview.Bottom.

Set constant=0, Priority=1000 and Multiplier=100:568 as I've set in below image.

enter image description here


Result


enter image description here

enter image description here

enter image description here

Hope this solves your problem.