隐藏和调整基于视图iOS的文本字段

时间:2015-10-30 14:11:04

标签: ios objective-c uiviewcontroller uisegmentedcontrol

我在iOS中很天真。我正在开发一个注册页面,其中包含基于视图隐藏文本字段。为了实现这一点,我为视图实现了UISegmentedControl,并使用以下代码隐藏基于段的文本域

- (IBAction)regSegmentButton:(id)sender {

if (_registrationSegment.selectedSegmentIndex ==1) {
    self.vendorID.hidden = NO;
}
else {
    self.vendorID.hidden = YES;
}

}

即使我实现了我的意图,但这种观点是荒谬的。视图如下图所示 customerscreen vendorscreen

我的问题是如何在隐藏字段后使视图看起来正常,就像在“vendorscreen.png”(第二张图片)中表示的那样。我是否需要应用任何动画才能实现它?如果是,请让我知道如何做到

请做必要的..

3 个答案:

答案 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
    }
}
  

Blockquote