首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂时移除NSLayoutConstraint?

暂时移除NSLayoutConstraint?
EN

Stack Overflow用户
提问于 2014-07-07 10:37:58
回答 2查看 1.8K关注 0票数 5

我有一个使用UITableViewCell部署的AutoLayout子类,我想要一个小动画,其中图像视图转换、增长和缩小。

目前,由于受到限制,图像右侧的标签也在移动(应该是这样)。

我想要一个快速和简单的方法,暂时说“保留这些标签,他们目前的地方,而这个动画运行”。这是我可以做的事情,不需要删除和重新添加这些约束,这是很多麻烦?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-07 12:39:14

没有API可以说“将这些视图保留在这里”,暂时禁用了自动收费表的某些部分。有几种可能的解决办法:

  • 在动画期间删除约束
  • 以不同的方式排列约束(例如,将它们设置为图像视图的superview,或者只依赖于图像视图的中心)
  • 重写容器视图的layoutSubviews,以便在[super layoutSubviews]中运行autolayout后将标签贴回您想要的位置(或删除图像视图的转换,运行autolayout,然后将其放回)
  • 子类您的图像视图,并覆盖frameForAlignmentRect:alignmentRectForFrame:,以获得自动输出,以使用未转换的框架用于对齐。

这里的答案提供了更多的细节和建议,这是一个类似的问题,即如何使转换和自动收费表一起播放:当使用自动布局时,如何调整CALayer的锚点?

票数 1
EN

Stack Overflow用户

发布于 2016-01-15 20:16:26

从iOS 8开始,NSLayoutConstraints现在有一个可以更改myConstraint.active = NO;active属性。这将消除约束,同时将此值设置为YES将读取它:

激活或取消激活约束调用addConstraint:和removeConstraint:在视图上,该视图是该约束管理的项的最接近的共同祖先。使用此属性而不是直接调用addConstraint:或removeConstraint:。来源

此外,还有两个新的类方法activateConstraints:deactivateConstraints:,它们采用了一个约束数组(NSArray<NSLayoutConstraint>),所以这是有帮助的,特别是当您有一个带有约束的IBOutletCollection时。

[NSLayoutConstraint deactivateConstraints:myConstraints];

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24608638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档