在iOS中彻底改变约束?

时间:2014-11-18 15:12:11

标签: ios objective-c types autolayout constraints

在我的情况下,我有一个单元格2标签(一个在另一个下面)和左边的图标。 xib文件中提到了这些元素及其约束(包括目标约束)。

如果第一个标签可见,那么这两个标签之间的约束应为“垂直间距”,值为0.

如果第一个标签被隐藏,那么约束应该是“中心y”以将标签与图标的中心对齐。

我知道如何单独进行,但如何在它们之间切换?另一个困难是所有这些元素都在单元格中,所以我应该重用它们而不是创建 - 删除。

EDITED

我希望在一个单元格中实现两种不同的情况:

enter image description here

已更新

我尝试使用以下代码:

[cell removeConstraint:cell.cstrSendingFileStatus];
                    cell.cstrSendingFileStatus = [NSLayoutConstraint constraintWithItem:cell.label2
                                                                              attribute:NSLayoutAttributeCenterY
                                                                              relatedBy:NSLayoutRelationEqual
                                                                                 toItem:cell.imgView
                                                                              attribute:NSLayoutAttributeCenterY
                                                                             multiplier:1
                                                                               constant:0];
                    [cell addConstraint:cell.cstrSendingFileStatus];

第一个单元格甚至被正确绘制,但我对下一个单元格有麻烦:在控制台中有很多消息,应用程序试图破坏imageView高度约束。

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是在第一个标签中有一个高度约束。您可以将高度常量设置为0.而不是隐藏它。这样,第二个Label将一直扩展到第一个标签所在的顶部。

编辑:

为了完成这项工作,您应该将底部空间放置在Superview = 0或第二个标签中的某个位置。这样第二个标签固定在底部并且不会移动,它将根据第一个标签高度进行扩展。第二个标签也不应该有高度约束,只有第一个。

编辑#2:第二个标签应该左上方(到第一个标签)底部(到超级视图),没有高度