我有一个使用AutoLayout布局的UITableViewCell
子类,我想要一个小动画,其中图像视图会变换,变长并缩小。
目前,由于受到限制,图像右侧的标签也在移动(应该是这样)。
我想要一种快速简便的方法暂时说“在这个动画运行时将这些标签保留在当前位置”。这是我可以做的事情,而不需要删除和重新添加这些约束,这是很麻烦?
答案 0 :(得分:5)
从iOS 8开始NSLayoutConstraints
现在有一个active
属性,您可以更改myConstraint.active = NO;
。这将删除约束,而将此值设置为YES
将[重新]添加它:
激活或取消激活约束调用addConstraint:和 removeConstraint:在最接近的共同祖先的视图上 由此约束管理的项目。使用此属性而不是 直接调用addConstraint:或removeConstraint: source
此外,有两个新的类方法activateConstraints:
和deactivateConstraints:
采用一系列约束(NSArray<NSLayoutConstraint>
),因此这可能会有所帮助,特别是如果你有一个{{1有约束。
IBOutletCollection
答案 1 :(得分:1)
没有API可以说&#34;将这些视图留在这里&#34;,暂时禁用自动布局的某些部分。有几种可能的解决方案:
[super layoutSubviews]
中自动布局运行后将标签贴回到您想要的位置(或删除图像视图的转换,运行autolayout然后将其放回)frameForAlignmentRect:
和alignmentRectForFrame:
以获取自动布局以使用未转换的帧进行对齐。此处的答案中提供了更多详细信息和建议,这是关于如何使变换和自动布局一起进行的类似问题:How do I adjust the anchor point of a CALayer, when Auto Layout is being used?