【问题标题】:iOS: layoutIfNeeded doesn't seem to work in updating view following change in constraints (Xcode 6.4, Swift 1.2)iOS:layoutIfNeeded 似乎无法在约束更改后更新视图(Xcode 6.4、Swift 1.2)
【发布时间】:2015-11-15 19:41:08
【问题描述】:

我正在开发一个聊天应用程序,并试图在键盘进入时改变我的视图。输入文本字段位于我的视图底部,我希望它在单击它和键盘时上升出现。 textField 位于 tableView 下的一个名为 dockView 的小 UIView 中,其中将显示消息。 dockView 的高度有一个引用为 dockViewHeight 的约束,它在开始时等于 47。所以我将这个方法与 UITextFieldDelegate 一起使用:

func textFieldDidBeginEditing(textField: UITextField) {
    println("did")
    self.view.layoutIfNeeded()
    UIView.animateWithDuration(0.5, animations: {
        println("go \(self.dockViewHeight.constant)")
        self.dockViewHeight.constant = 400
        println("go \(self.dockViewHeight.constant)")
        self.view.layoutIfNeeded()
        println("go \(self.dockViewHeight.constant)")
        }, completion: nil)
}

调用该方法,因为所有内容都打印到控制台。正如您在日志中看到的那样,约束也会更新:

did
go 47.0
go 400.0
go 400.0

但是,屏幕上没有变化,dockView 的高度保持不变。知道为什么会这样吗?

谢谢!

【问题讨论】:

    标签: layout uiview xcode6 constraints uiviewanimation


    【解决方案1】:

    你应该在动画块之外设置你的约束,并且只在块内调用layoutIfNeeded

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多