如何使用自动布局来移动视图

Posted

技术标签:

【中文标题】如何使用自动布局来移动视图【英文标题】:How to use autolayout to move a view 【发布时间】:2013-01-28 13:57:29 【问题描述】:

当我删除另一个子视图时,我希望我的子视图移动到顶部并且它的超级视图缩小。

我有一个视图,称为 topView。里面有三个视图:toField、fromField、subjectTextView。

我添加了以下约束来实现这一点,但它们不起作用:当 toField 被删除时,没有任何反应,topView 保持不变。

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(_fromField, _toField, _subjectTextView);
NSArray *layoutConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_toField][_fromField][_subjectTextView]|" options:0 metrics:nil views:viewsDictionary];
[_topView addConstraints:layoutConstraints];

我读过Apple reference,但没有任何内容。

【问题讨论】:

【参考方案1】:

使用界面生成器集:

topView_toField 之间的超级视图的顶部空间

_toField_fromField 之间的垂直间距

_fromField_subjectTextView 之间的垂直间距

_subjectTetView 和 superview 之间的 superview 底部空间(这必须是负数 - 比如说 -20.0)

当您隐藏subjectTextView 时,只需将其高度约束设置为0.0,topView 就会缩小。

【讨论】:

以上是关于如何使用自动布局来移动视图的主要内容,如果未能解决你的问题,请参考以下文章

隐藏视图时如何使用自动布局移动其他视图?

在使用自动布局下动画/移动视图

如何移动子视图控制器,同时使用自动布局而不是框架隐藏状态栏?

使用自动布局时,如何调整 CALayer 的锚点?

如何设置自动布局,以便 UILabel 调整大小并根据需要移动其他视图

如何在自动布局中使用 UITableViewCell 的动态高度并在底部视图隐藏时将其他视图向上移动?