Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get warning for autolayout, NSAutoLayout,objective C [duplicate]

My goal : to center an indicator ( vertically and horizontally ) to the button in a view

What I am doing is :

[self.logInButton addConstraint:[NSLayoutConstraint constraintWithItem:spinner1
                                                             attribute:NSLayoutAttributeCenterY
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:self.logInButton
                                                             attribute:NSLayoutAttributeCenterY
                                                            multiplier:1.0
                                                              constant:0]];
[self.logInButton addConstraint:[NSLayoutConstraint constraintWithItem:spinner1
                                                             attribute:NSLayoutAttributeCenterX
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:self.logInButton
                                                             attribute:NSLayoutAttributeCenterX
                                                            multiplier:1.0
                                                              constant:0]];
self.logInButton addSubView:spinner

However, I am getting a warning below

The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x17e19390 UIActivityIndicatorView:0x17d035d0.centerY == UIButton:0x17df4430.centerY>
    When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView _viewHierarchyUnpreparedForConstraint:] to debug.
2013-06-12 17:37:19.610 FlipGive[366:60b] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x17e19810 UIActivityIndicatorView:0x17d035d0.centerX == UIButton:0x17df4430.centerX>
    When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView _viewHierarchyUnpreparedForConstraint:] to debug.

Does anyone know what I am doing wrong here ? Please help

All comments are welcomed here. Thanks

like image 295
tranvutuan Avatar asked Jun 12 '13 21:06

tranvutuan


People also ask

What is AutoLayout in iOS?

Auto Layout asks your controls how big they need to be and lays out the screen based on that information. Usually, you want to use the intrinsic content size, but there are some cases where you may not want to do that. In these cases, you can set an explicit width or height constraint on a view.


1 Answers

You need to add the views before adding constraints.

put this first and then add constraints

self.logInButton addSubView:spinner
like image 131
THE_DOM Avatar answered Sep 20 '22 13:09

THE_DOM