我在iOS中很天真。我正在开发一个注册页面,其中包含基于视图隐藏文本字段。为了实现这一点,我为视图实现了UISegmentedControl,并使用以下代码隐藏基于段的文本域
- (IBAction)regSegmentButton:(id)sender {
if (_registrationSegment.selectedSegmentIndex ==1) {
self.vendorID.hidden = NO;
}
else {
self.vendorID.hidden = YES;
}
}
我的问题是如何在隐藏字段后使视图看起来正常,就像在“vendorscreen.png”(第二张图片)中表示的那样。我是否需要应用任何动画才能实现它?如果是,请让我知道如何做到
请做必要的..
答案 0 :(得分:1)
你可以使用/不使用动画。这是没有动画的步骤。您必须将您的电子邮件ID,密码,确认密码和注册按钮添加到普通UIView,例如:view1然后当您更改开关时,您必须调整view1的“y”位置。如下所示
- (IBAction)regSegmentButton:(id)sender {
if (_registrationSegment.selectedSegmentIndex ==1) {
self.vendorID.hidden = NO;
}
else {
self.vendorID.hidden = YES;
}
int y = (_registrationSegment.selectedSegmentIndex == 1) ? 200 : 150
CGRect rect = self.view1.frame;
rect.origin.y = y;
self.view1.frame = rect;
}
我刚刚对理解值进行了硬编码,您需要根据视图调整y
值。
答案 1 :(得分:0)
一个解决方案是:您可以拥有一个包含所有底部UITextField的UIView。 您所要做的就是将新视图设置为隐藏视图位置的动画。
[UIView animateWithDuration:0 animations:^(){
textFieldContainers.frame = CGRectMake(textFieldContainers.frame.origin.x, textFieldContainers.frame.origin.y - vendorIDTextField.frame.size.height, textFieldContainers.frame.size.width, textFieldContainers.frame.size.height);
}];
另一个是使用约束(在一个视图容器中封装' static'视图也会对此解决方案有所帮助)
答案 2 :(得分:0)
enter image description here指的是gal marom答案,您也可以将剩余的TextFields放在UIView中[在情节提要上]并使用其中的约束到您的细分视图中,然后您应单击顶部约束本身[约束到细分视图]并在代码中创建它的出口,然后在分段操作的条件下执行以下操作:
Blockquote
@IBOutlet weak var fullnameTF: UITextField!//* by itself
@IBOutlet weak var userEmail: UITextField! //* in the same UIView
@IBOutlet weak var userPassword: UITextField! //* in the same UIView
@IBOutlet weak var viewStackTopCont: NSLayoutConstraint!
@IBAction func segAction(_ sender: Any) {
if seg.selectedSegmentIndex == 0 {
fullnameTF?.isHidden = true
viewStackTopCont.constant = 20 // after the TextField is hidden
}else if seg.selectedSegmentIndex == 1{
fullnameTF?.isHidden = false
viewStackTopCont.constant = 60 //your current constraint margin
}
}