我有一个UIViewController
,其中有几个不同的UIView
子视图。当用户调用某个动作时,我手动改变每个的大小,比例和位置。我想更新其中一个UILabel
s(其中一个子视图)中的文本,但每次我都这样做时,所有子视图都会恢复到故事板所要求的原始大小和位置。有没有办法防止这种情况发生,即只更改文本而不恢复旧的测量?
由于
答案 0 :(得分:1)
我想更新其中一个UILabel(其中一个子视图)中的文本,但每次我都这样做时,所有子视图都会恢复到故事板所要求的原始大小和位置。有没有办法防止这种情况发生,即只更改文本而不恢复旧的测量?
问题是您通过设置frame
属性来更改子视图的大小和位置。您必须不对自动布局控制下的视图执行此操作!如果你这样做,确实会发生这样的事情:当布局时间到来时,会强制执行自动布局约束,并且视图会跳回到你所谓的故事板所要求的大小和位置。设置标签文本确实会导致布局时间。
相反,要更改子视图的大小和位置,请更改其约束! (或者,更改他们的帧然后然后更改他们的约束以匹配。)这样,当布局时间到来时,什么都不会发生:约束将匹配子视图的当前大小和位置。