Martin
Martin

Reputation: 24308

Update Frames & Constraints in Xcode (Interface Builder)

I have been learning Xcode and iOS and things are going well with coding but I am confused about a few options in interface builder.

It seems that when I add a contraint I can choose to "Update Frames" and then either "Items of new contraints" or "All Frames" but it seems that I don't always need to do this... sometimes I do and sometimes I don't - I don't think I truly understand the concept. It seems to be optional. When is the case to choose it or not?

Once a constraint is added, then should that be it?

There is also a context menu (Resolve autolayout issues) (3rd item on the bottom on interface builder, represented by a triangle between 2 vertical lines) which also allows me to Force Update of constraint or update of frame. Why is this needed ? I notice the options inside are usually disabled so I presume this becomes active when there are issues ?

I have tried searching the internet and I can't find anything specific; the more I read, the more confused I seem to get.

Also, a sanity check: a frame is the bounding box of every single control (view) not just the viewcontrol, so every view (control) as its own frame. Is this correct?

Upvotes: 11

Views: 10339

Answers (2)

Erez Haim
Erez Haim

Reputation: 1007

I'll try to explain the concept of constraints and storyboard representation.
Constraints - are used to determine the position of UIView elements inside your view. For example, the vertical distance from top of the view to UIView element top. When you add constraint using the storyboard it plays 2 roles:

  1. Positioning the element inside a view when your app runs
  2. Positioning the element in the storyboard representation itself

Update Frames - is used when you want to update storyboard display so that it fits the currently applied constraints. When the display of the storyboard does not match the constraints a warning will appear.

Add missing constraints / Update constraints - will create/change the constraints applied on UIView element to match what currently presented in the storyboard. Kind of the other way around from update frames.

Upvotes: 15

Peter Foti
Peter Foti

Reputation: 5654

You do not have to click on "update frame" every time you add a constraint, if you do, it will update the frame of the view to whatever it should be based on the constraints. Yes, every view has a frame and it is the rectangle relative to the views superview.

More often than not you'll probably click on update constraints (Shift + Command + =), this will allow you to resize views that are already constrained, and have the constraints updated to match.

Upvotes: 3

Related Questions