Ios 自动布局-根据其他标签调整标签Y位置';它上面的动态高度是多少
我有两个标签。标签A和标签B如下所示 当标签A高度为零时,我想将标签B向上移动,使其上边距为superview=20pt 如果标签A高度>0,则标签B Y位置= 标签A上边距+标签A高度+标签A和B之间的垂直间距(即标签A底部+垂直间距B/w标签A和B=标签B Y位置)Ios 自动布局-根据其他标签调整标签Y位置';它上面的动态高度是多少,ios,autolayout,xcode9,swift3.2,Ios,Autolayout,Xcode9,Swift3.2,我有两个标签。标签A和标签B如下所示 当标签A高度为零时,我想将标签B向上移动,使其上边距为superview=20pt 如果标签A高度>0,则标签B Y位置= 标签A上边距+标签A高度+标签A和B之间的垂直间距(即标签A底部+垂直间距B/w标签A和B=标签B Y位置) 是否可以使用autolayout进行此操作?您可以将LabelA.height>0大小写的所有约束链接到NSLayoutConstraint iOutletCollection @property(强,非原子)IBOutle
是否可以使用autolayout进行此操作?您可以将LabelA.height>0大小写的所有约束链接到NSLayoutConstraint iOutletCollection
@property(强,非原子)IBOutletCollection(NSLayoutConstraint)*labelAScenarioConstraints代码>
对于LabelA.height=0的情况也一样,如
@属性(强,非原子)iOutletCollection(NSLayoutConstraint)*labelAWithoutHeightScenarioConstraints
当你想改变它时,只需做如下操作:
for (NSLayoutConstraint *constraint in labelAScenarioConstraints) {
[constraint setActive:labelA.frame.size.height > 0];
}
for (NSLayoutConstraint *constraint in labelAWithoutHeightScenarioConstraints) {
[constraint setActive:labelA.frame.size.height == 0];
}
您可以通过更改此属性来激活或停用约束…激活或停用约束会在视图上调用addConstraint:和removeConstraint:,该视图是此约束管理的项的最接近的公共祖先。使用此属性,而不是直接调用addConstraint:或removeConstraint:
请记住,所有UI更新都应该从主线程完成。如果要设置约束更改的动画,可以将代码放入UIView animateWithDurationanimations块中。问题在哪里。。没有人知道您要调整哪个标签-假设A是动态的,而您希望B向下移动。。使标签A具有contentHuggingPriority
的.required
和contentCompressionResistancePriority
的.required
。。然后,顶部标签将调整自身大小以适合,另一个将相应地移动。我想在标签A高度为零时向上移动标签B。如果标签A高度为零,我想删除垂直间距。请使用轴设置为垂直的UIStackView
。使用20的间距、对齐填充、分布填充。现在,您必须调整拥抱优先级->为需要比其他标签增长更多的标签设置较低的值。每当您需要将标签A的高度设置为0
,您只需要将该标签的hidden
属性设置为true
。