我的故事板中有一个带有标签,文本字段和按钮的视图,我希望当我点击一个按钮时,一些文本字段和标签消失,我可以使用Swift。
self.btnLoginFB.hidden = true
self.btnLoginFB.removeFromSuperview()
但如果我隐藏了该字段,则该空间将被占用,如果我尝试删除,则所有其他组件将转到故事板外的另一个空间。
我需要帮助才能做到这一点,在HTML中已经足够隐藏div但是在故事板中我不知道:(
感谢您的帮助。
答案 0 :(得分:0)
假设您正在使用Autolayout,正如您所注意到的那样,隐藏该字段将不会填充它所在的空间。该空间无人居住。从superview中删除会导致各种不稳定的事情发生。
以下是我完成此任务的方法,设置您想要使用Autolayout正确填充空间的视图(即,如果View A位于View B之上,请将View B的顶部设置为远离View A底部的x边距。)然后你可以隐藏视图与否(我通常为了理智而做),最重要的部分是将视图A的高度设置为0.我通常通过操纵视图A的高度约束上的常量来做到这一点,但你也可以只要你的身高变为0,就明确地将高度改为0。
如果您正确设置了Autolayout,这将正确移动上方或下方的任何视图以填充空间,具体取决于您将视图相互关联的方式。如果您有任何问题,请告诉我。
编辑:所以我通常会为我的身高限制保留一个属性,如果我知道我将隐藏一个约束,那么我通常会做的就是这样(隐藏视图A):< / p>
npm install
仅更改高度:
viewA.hidden = YES;
heightConstraint.constant = 0;
[viewA setNeedsDisplay];
对viewA.hidden = YES;
CGRect newFrame = viewA.frame;
newFrame.size.height = 0;
viewA.frame = newFrame;
[viewA setNeedsDisplay];
的调用可能是无关紧要的,但我实际上并没有将其构建出来,所以我不确定,我认为你在方案1中需要它,并且在方案2中不需要它。 / p>
此外,为了使这些开箱即用,您需要确保将视图B设置为固定到视图A的顶部或底部边缘,这样它将自动填充留下的空间。如果您不使用Autolayout,则需要自己计算View B的正确框架,并在隐藏View A后进行设置。