是否可以在给定一组约束的情况下获得计算出的帧?
Posted
技术标签:
【中文标题】是否可以在给定一组约束的情况下获得计算出的帧?【英文标题】:Is it possible to get the calculated frame given an array of constraints? 【发布时间】:2013-07-15 11:42:46 【问题描述】:我正在尝试在触摸时将视图从缩略图动画化为全屏视图。当视图处于缩略图模式时,它是 UITableView.tableFooterView 的子视图。当我动画到全屏时,我在更新约束之前将视图移动到控制器的根视图。我这样做是因为 tableview 剪辑了子视图。
这是完美的工作,但当我尝试做反向动画时,它并不那么容易。我必须先将缩略图视图移回 UITableView.tableFooterView 的子视图,然后才能更新约束。然后我撤消约束(基本上将它们设置为最初的位置)。这可行,但动画看起来不正确,因为一旦将视图移回 UITableView.tableFooterView,它就会再次被 UITableView 剪辑,并且动画部分隐藏在所有 tableview 装饰后面!
我的想法是获取约束的计算帧并执行老式帧动画,然后安装约束。
在给定一系列约束的情况下,是否有一种已知的方法可以询问布局系统,如果没有实际安装这些约束,框架将是什么?
谢谢。
【问题讨论】:
【参考方案1】:我不认为有这样的方法。
请注意,您定义的约束 (NSLayoutConstraint
) 不是唯一的约束。其他约束由视图的属性定义(例如内在内容大小、拥抱优先级等)。
我想这在使用自动调整大小而不是自动布局时会更好。
另一种解决方案是在表格页脚中使用隐藏的占位符视图。当您将视图返回到页脚时,您可以只要求占位符的框架。
【讨论】:
关于占位符视图的好主意!会试一试的。现在使用 AutoLayout 动画似乎更难了。 :-(以上是关于是否可以在给定一组约束的情况下获得计算出的帧?的主要内容,如果未能解决你的问题,请参考以下文章