tranvutuan
tranvutuan

Reputation: 6109

When is the layoutSubviews method called?

I am going through a tutorial that mentions the following method:

-(void)layoutSubviews

located in CustomerCell.m

When is this method called during the app execution? Is it automatically invoked? I dont see any callback.

Upvotes: 7

Views: 10220

Answers (3)

skytz
skytz

Reputation: 2201

You will find your answer here

EDIT: copied directly from the blog:

  • init does not cause layoutSubviews to be called (duh)
  • addSubview causes layoutSubviews to be called on the view being added, the view it’s being added to (target view), and all the subviews of the target view
  • setFrame intelligently calls layoutSubviews on the view having it’s frame set only if the size parameter of the frame is different
  • scrolling a UIScrollView causes layoutSubviews to be called on the scrollView, and it’s superview
  • rotating a device only calls layoutSubview on the parent view (the responding viewControllers primary view)
  • removeFromSuperview – layoutSubviews is called on superview only

Upvotes: 13

Mike Weller
Mike Weller

Reputation: 45598

The layoutSubviews method will be called any time the system thinks your view needs to be layed out again. For example, if the view's frame is changed, or a subview is added, etc. If you need to manually trigger this, you can call the setNeedsLayout method.

Upvotes: 1

Joey J
Joey J

Reputation: 1365

You are correct. Layout subviews is automatically invoked. Check the docs for more information on it.

The docs don't specifically say WHEN this is called. However, you can pretty much guarantee it is called rather often. You really only want to override this method when you can't have your subviews resize or move themselves using struts and springs. One instance would be reorganizing subviews positions when the device changes orientation.

Upvotes: 1

Related Questions