在Autolayout中隐藏UITextView和UILabels

时间:2015-07-08 08:09:09

标签: ios objective-c autolayout uitextfield uilabel

我有一个选择器视图,当用户从选择器视图中选择某个值时,我想隐藏某些文本视图和标签:

[label1] [---- textview1 ----]

[label2] [---- textview2 ----]

[label3] [---- textview3 ----]

所以我想要的是:

if (picker value is equal to "someValue")
{
 - hide label 2 and textview 2
 - shift label 3 and text view 3 to be positioned below label 1 and textview1
}

我尝试this solution我改变了优先级,this solution但也没有运气。 我需要立刻隐藏标签和textview。

3 个答案:

答案 0 :(得分:0)

这取决于您的观点如何布局。我建议采用两种方法:

1)在wrapperView中包装每对textView +标签。将IBOutlet设置为每个包装器viewView的高度约束。然后你可以隐藏这样的行:

wrapperView2HeightConstraint.constant = 0;
[wrapperView2 layoutIfNeeded];

您可能需要设置wrapperView1.clipsSubviews = YES;,以便实际隐藏子视图。

2)另一种方法是使用UITableView并将每对放在UITableViewCell中。然后,您可以轻松地操纵[tableView reloadData];上隐藏的单元格。甚至还有一个内置的动画。

答案 1 :(得分:0)

设置这样的约束

然后在gif中看起来像什么

代码 保留3个房产

@property (weak, nonatomic) IBOutlet UILabel *secondLabel;
@property (weak, nonatomic) IBOutlet UITextField *secondTextfield;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *toChangeConstraint;

然后隐藏

  self.secondLabel.hidden = true;
self.secondTextfield.hidden = true;
self.toChangeConstraint.constant = -20;
[UIView animateWithDuration:0.5 animations:^{
    [self.view layoutIfNeeded];
}];

然后出口约束就是这个

答案 2 :(得分:0)

如何将textField和Label的标签设置为textfield的标签,以1,2开头,很快将Label标签设置为51,52,依此类推。这样他们就可以达到50 b / w的差异。你可以设置label.hidden和textview.hidden