使用自动布局并创建动态界面(隐藏字段时自动重新对齐)

Posted

技术标签:

【中文标题】使用自动布局并创建动态界面(隐藏字段时自动重新对齐)【英文标题】:Using auto layout and creating dynamic interface (realigning automatically when field hidden) 【发布时间】:2014-07-22 20:54:21 【问题描述】:

使用 Xcode5 和自动布局。考虑以下场景:

我有一个“Dispatch” UITextField 的出口

@property (weak, nonatomic) IBOutlet UITextField *dispatchTextField;

如果用户点击“相机”按钮,我想隐藏 dispatchTextField 并向上移动“主题”和“正文”(下)。

这不是一个真实的场景,但我面临着将使用这种技术的任务。我见过可以修改容器大小的代码示例等等。在 XAML 中 - 有“StackPanel”,在 android 中有类似的控件,我可以隐藏这个 TextField,下面的视图会自动弹出。

那么,在 XCode5 中自动布局的正确方法是什么?

我试过了(没有运气)

self.recipientTextField.hidden = YES;

我也试过

[self.recipientTextField setFrame:CGRectMake(0, 0, 0, 0)];
    [self.view layoutIfNeeded];

【问题讨论】:

【参考方案1】:

向文本字段添加高度限制。确保没有冲突的垂直约束后,在视图控制器中添加对此约束的引用。

向相机按钮添加一个动作并将其连接到视图控制器。每当点击按钮时,您都可以将高度约束的constant 属性设置为零。

确保将其他视图设置为与您希望缩小的文本字段保持恒定的垂直间距。

【讨论】:

谢谢,这行得通!您对如何避免做 2 个约束出口有什么建议吗?对于这个特定示例,我要隐藏的字段和相机按钮之间的垂直间距存在限制。所以,我也必须将这个设置为 0,否则我会在相机和主题字段之间获得双倍间距 @katit 这就是自动布局。易用性是以简洁为代价的。您必须更新这两个约束。

以上是关于使用自动布局并创建动态界面(隐藏字段时自动重新对齐)的主要内容,如果未能解决你的问题,请参考以下文章

自动布局和对齐约束

使用自动布局隐藏视图并重新定位其他视图

如何使用自动布局将两个具有动态高度的 UILabel 与 UICollectionViewCell 的底部对齐

使用自动布局将 3 个按钮与目标 C 中的动态内容对齐

自动布局中的 UIButton 动态宽度

垂直自动布局两个视图,动态高度对齐顶部