我有一个选择器视图,当用户从选择器视图中选择某个值时,我想隐藏某些文本视图和标签:
[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。
答案 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