Generate a base View and
addSubView() the UI parts that correspond to the feature.
After that, if I changed the function, I
removeFromSuperview() all the UI parts on the base view, and then reset the value,
After reconfiguration, the UI parts were lumped in the upper left corner of the screen, and when I checked with Debug View Hierarchy, I found the following error in RuntimeError:
AutoLayout is configured on the StoryBoard.
Therefore, the first time you do not reconfigure it will be displayed correctly.
removeFromSuperview() I didn't expect the restriction to be lifted because I understood that the instance would not be released and only disconnected from View.
Is there a possibility that the restriction on UI parts will be lifted?
Because AutoLayout represents a relative relationship with other adjacent views and superViews, removing the view using the
removeFromSuperView() method usually results in inconsistent constraint errors such as those written.
If you change the structure, such as removing or adding views at runtime, you must also change the constraints.
Changing the AutoLayout constraints with code to match the view at runtime is troublesome, so if possible, it would be easier to have a different configuration of view and switch between views.
See API Reference in
Calling this method removes any constraints that refer to the view you are removing, or that refer to any view in the subtree of the view you are removing.
removeFromSuperview() removes the restrictions associated with the view as well.
Constraint errors occur because the constraints you set on the storyboard are lost.
You must reconfigure AutoLayout with the code, or save any constraints related to the view before calling
removeFromSuperview() and reapply them after
removeFromSuperview() because I understood that the instance would not be released and only disconnected from View.
That perception is incorrect.A View is released if it is not strongly referenced by a non-Superview object.And Auto Layout constraints do not correspond to this 」non-Superview object には
Because "release" is used here to mean to be released and not released immediately, checking
nil at a limited time just before the object monitoring system releases may allow you to obtain addresses.
At times like this, it is recommended to create a verification program.
UILabel and two
label, configure Constraint on the Storyboard.
removeLabel() button, and then press the
output:Label is nil
View placed in Storyboard/Interface Builder does not
removeFromSuperview().If you want to remove View from the display, under
hidden in Swift2 and earlier), choose how to hide it.If you hide it, Constraint is maintained.
© 2022 OneMinuteCode. All rights reserved.