如何使用自动布局/ StackView等约束设置隐藏和显示视图

时间:2016-11-14 12:14:38

标签: ios objective-c

我有一个更大的屏幕设计,它有加号按钮,用于添加更多字段。例如,我需要添加2个电子邮件/电话号码,当我按下加号按钮时,它将在电子邮件标题中显示另一个文本字段,反之亦然。如果我以编程方式使用hide和show方法,则其余空格将为空白。为此,我需要为视图设置约束和setLayout。怎么可能?

2 个答案:

答案 0 :(得分:2)

我想快速看一下这个想法。

在内部进行滚动查看,将一个视图显示为您的文本字段,如电子邮件和更多您想要的文本。

现在设计所有字段,无论你要显示什么。

添加

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *ViewHeightConstraints;

用于隐藏文本字段时的容器视图只需将所有hideTextfield的高度减去ViewHeightConstraints。

当你隐藏文本字段时,请执行以下操作:

 ViewHeightConstraints.constant = 0;
    _addressView.hidden = YES;
    [self.view layoutIfNeeded];

好的,当你显示textfield做这样的事情时:

 ViewHeightConstraints.constant = 243;
        _addressView.hidden = NO;
        [self.view layoutIfNeeded];

每当你改变约束时,每次都写这个。

[self.view layoutIfNeeded];

用于为MainView的主视图集高度约束设置框架。我这样做了。

 @property (strong, nonatomic) IBOutlet NSLayoutConstraint *containerHeightConstraints;

_containerHeightConstraints.constant = _bottomView.frame.origin.y+_bottomViewHeight.constant;
        [self.view layoutIfNeeded];

希望它能奏效。

答案 1 :(得分:1)

您需要为此获取字段高度约束的IBOutlet。

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *fieldConstraintHeight;

现在当你想隐藏它时使用

fieldConstraintHeight.constant = 0;