【问题标题】:Totally change constraint in iOS?完全改变 iOS 中的约束?
【发布时间】:2014-11-19 16:39:33
【问题描述】:

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

如果第一个标签可见,则约束应该是这两个标签之间的“垂直间距”,值为 0。

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

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

已编辑

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

更新

我尝试使用以下代码:

[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 高度限制。

【问题讨论】:

    标签: ios objective-c types autolayout constraints


    【解决方案1】:

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

    编辑:

    要完成这项工作,您应该在第二个标签中将底部空间设置为 Superview = 0 或其他内容。这样第二个标签就固定在底部并且不会移动,它将根据第一个标签的高度展开。第二个标签也不应该有高度限制,只有第一个。

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

    【讨论】:

    • 与?您建议不要更改约束,而是执行复杂的计算来设置约束值。你知道这些标签可能有多行吗?
    • 在您的问题中,您询问标签为空时该怎么办。我说不是添加或删除约束,而是将其高度设置为 0。我没有看到任何复杂的计算。
    • 再次 - 和?当我将第一个标签的高度约束设置为 0 时,第二个标签恰好出现在第一个标签的位置,但它不是中心。我对第二个标签的限制是:顶部、左侧、右侧和高度。
    • 好的,在某些情况下它可能会起作用。但我仍然需要将它与图标的垂直中心对齐。我没有写到这个图标在第一个标签和第二个标签之间。目前我尝试删除一个约束并添加一个新约束,但仍然没有成功。
    • 除非你给我们看一些截图来说明问题是什么,否则我想不出别的了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多