【问题标题】:Elements in View Controller Disappear When Clicking or Tapping Them视图控制器中的元素在单击或点击它们时消失
【发布时间】:2016-03-31 23:21:33
【问题描述】:

我正在使用 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
    }

}

【问题讨论】:

    标签: ios swift uiviewcontroller viewcontroller


    【解决方案1】:

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

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

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

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

    如果您将 alpha 设置为 0 到 viewDidLoad(),那么问题可能会消失。

    【讨论】:

    • 这成功了!非常感谢,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-11-22
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2020-07-20
    相关资源
    最近更新 更多