单击或点击它们时,视图控制器中的元素消失

时间:2016-03-31 23:21:34

标签: ios swift uiviewcontroller viewcontroller

我正在使用Swift 2在XCode上开发一个应用程序,并且我的UI遇到了错误。我在感兴趣的视图控制器上放置了UILabel,UITextView和UITextField。

在输入UITextField之前,一切正常。我插入了文本字段并分配了适当的约束,在模拟应用程序时,单击文本字段将导致所有UI元素消失或者alpha瞬间变为零(我不确定这两个中的哪一个实际上是发生)。

我没有通过控制台收到任何反馈,应用程序本身也不会崩溃。

这是我的代码:

//Declare the following UI objects to be manipulated
@IBOutlet weak var labelOneTitle: UILabel! 
@IBOutlet weak var textDescription: UITextView! 

@IBOutlet weak var fieldInput: UITextField! 

override func viewDidLayoutSubviews() {

    //Set UI object alphas to zero prior to loading the view
    labelOneTitle.alpha = 0
    textDescription.alpha = 0
    fieldInput.alpha = 0

}
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func viewDidAppear(animated: Bool) {

    UIView.animateWithDuration(2) { () -> Void in
        self.labelOneTitle.alpha = 1
    }
    UIView.animateWithDuration(3) { () -> Void in
        self.textDescription.alpha = 1
    }
    UIView.animateWithDuration(3) { () -> Void in
        self.fieldInput.alpha = 1
    }

}

1 个答案:

答案 0 :(得分:0)

可能是UIViewController。viewDidLayoutSubviews重新检查所有约束并根据类引用重新配置视图:

  

当视图控制器视图的边界发生变化时,视图会调整其子视图的位置,然后系统会调用此方法。但是,调用此方法并不表示已调整视图子视图的各个布局。每个子视图都负责调整自己的布局。

     

您的视图控制器可以覆盖此方法以进行更改   该视图列出了其子视图。这个的默认实现   方法什么都不做。

当您单击UITextField时,会出现键盘(可能),从而调用将所有UI元素的alpha设置为0的方法。

如果你将alpha的设置移动到viewDidLoad(),那么问题可能会消失。