【问题标题】:Autolayout: Adjust view height based on newly set constraints自动布局:根据新设置的约束调整视图高度
【发布时间】:2014-10-21 02:30:41
【问题描述】:

刚开始比较彻底地使用AutoLayout,遇到了一个大问题:

我有一个视图,其中一些子视图附加到它的 top 和一些子视图附加到它的 bottom,所以当视图的高度发生变化时,子视图会相应地移动。根据用户操作,子视图的高度可能会发生变化(= 它们的高度约束值会发生变化),这可能会导致它们不再适合其父视图。

我如何确定一组新的约束是否需要更改父视图的高度以适应其所有子视图?最好在显示具有新约束的所有字段之前 - 我希望视图的高度同时更改。这样做的原因:我动画约束值的变化,我想同时动画视图高度变化。因此,已经无法通过调用layoutIfNeeded 来执行新的约束。

【问题讨论】:

    标签: ios autolayout


    【解决方案1】:

    问题还不够清楚,难道不能只获取每个子视图的高度,然后将汇总值与父视图的高度进行比较吗?

    【讨论】:

    • 我不知道子视图的高度,因为它们的高度是由 iOS 通过约束自动计算的。例如,文本字段将根据其内容自动调整其高度,连接到该字段的所有视图将根据垂直距离限制等向下移动。所有这些都是免费提供的自动布局,所以我' d 宁愿不要自己在它旁边做所有的计算。
    • 你能告诉我你在父视图中有哪些视图或截图吗?