How to add a random view in real time when using Pure Layout

168 views Asked by At

I'm using PureLayout in my iOS app and I'm following the instructions here: https://github.com/PureLayout/PureLayout/wiki/Tips-and-Tricks That is, using a flag called didSetupConstraints and the method updateViewConstraints. But now I would like to add a view inside another random view when user presses a button. The only way to do that I could imagine was creating another flag like didNewViewSetupConstraints and creating another block inside updateViewConstraints, where I use 2 UIView variables to create the new constraints between them. Is that right? Because I think it is a lot of work for just a small thing (adding a subview and its contraints). Note that I cannot create the constraints without installing them because I donĀ“t know the beforehand (the user will tap them). That is the reason I remark RANDOM. I see in sample code number 10, it is used autoRemoveConstraints and autoInstallConstraints to toggle between 2 groups of constraints. Because my 2 views are random, I guess I cannot do something like that, that is the reason I created a flag and 2 variables for these 2 views to setup the constraints inside updateViewConstraints. But I'm sure that is too much. Thanks for any suggestion or idea.

1

There are 1 answers

6
smileyborg On BEST ANSWER

You don't have to create/activate all of your constraints inside of -updateConstraints. You can create constraints at any time, and activate them as long as both of the views you wish to constrain share a common superview (in other words, the views need to have been added to the same view hierarchy already).

I would recommend creating your default set of static constraints inside of -updateConstraints as you're doing. Then, in the callback method when the user taps the button, you can create this new view, add it as a subview, and then create & activate the new constraints for it right then and there.

If you remove this view later on, that will remove all of the constraints associated with it automatically. But if you need to adjust the constraints for this new view, you can store a separate reference to the constraints when they are created.