【问题标题】: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 装饰后面!

我的想法是获取约束的计算帧并执行老式帧动画,然后安装约束。

在给定一系列约束的情况下,是否有一种已知的方法可以询问布局系统,如果没有实际安装这些约束,框架将是什么?

谢谢。

【问题讨论】:

    标签: ios macos cocoa-touch autolayout nslayoutconstraint


    【解决方案1】:

    我不认为有这样的方法。

    请注意,您定义的约束 (NSLayoutConstraint) 不是唯一的约束。其他约束由视图的属性定义(例如内在内容大小、拥抱优先级等)。

    我想这在使用自动调整大小而不是自动布局时会更好。

    另一种解决方案是在表格页脚中使用隐藏的占位符视图。当您将视图返回到页脚时,您可以只要求占位符的框架。

    【讨论】:

    • 关于占位符视图的好主意!会试一试的。现在使用 AutoLayout 动画似乎更难了。 :-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2012-03-17
    • 2016-11-13
    相关资源
    最近更新 更多