使用自动布局并创建动态界面(隐藏字段时自动重新对齐)
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 这就是自动布局。易用性是以简洁为代价的。您必须更新这两个约束。以上是关于使用自动布局并创建动态界面(隐藏字段时自动重新对齐)的主要内容,如果未能解决你的问题,请参考以下文章