gpt4 book ai didi

ios - 键盘动画移动 UITableView 部分标题

转载 作者:行者123 更新时间:2023-11-28 07:49:24 25 4
gpt4 key购买 nike

我遇到了一个问题,如果有人之前已经遇到过这个问题,我正在徘徊。我的设置如下:- 我使用由 3 个元素组成的 UIViewController - 顶部的 UIView
- 居中的 UITableView - 底部的 UiView

我正在做的是:一旦显示键盘,我将底部的 UIView 动画化为向上推。这工作正常,但我遇到的问题是,一旦键盘消失,表格 View 中第一个单元格的节标题会随着动画的移动而移动一点。

extension UserDetailsViewController: KeyboardDelegate {
func keyboardWillShow(notification: NSNotification) {
if let info = notification.userInfo {
let keyboardFrame = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue

UIView.animate(withDuration: 0.3, animations: {
if UserDeviceType.IPad || UserDeviceType.IPadPro {
self.updateConstraints(gradientHeight: 90, footerHeight: 60, footerBottom: keyboardFrame.height)
} else if UserDeviceType.IPhone5 || UserDeviceType.IPhone4 {
self.updateConstraints(gradientHeight: 65, footerHeight: 40, footerBottom: keyboardFrame.height)
} else if UserDeviceType.IPhoneX {
self.updateConstraints(gradientHeight: 90, footerHeight: 60, footerBottom: keyboardFrame.height)
} else {
self.updateConstraints(gradientHeight: 67, footerHeight: 40, footerBottom: keyboardFrame.height)
}
self.view.layoutIfNeeded()
self.tableView.layoutIfNeeded()
})
}
}

func keyboardWillHide(notification: NSNotification) {
UIView.animate(withDuration: 0.3, animations: {
self.setupConstraints()
self.view.layoutIfNeeded()
self.tableView.layoutIfNeeded()
})
}
}

键盘正确显示 Keyboard showing up correctly

键盘动画出来后 After the keyboard animating out

最佳答案

问题是由动画内部的 self.view.layoutIfNeeded() 引入的。看起来,执行完布局步骤后,不情愿地增加了scrollview的top inset。 解决方案是添加 tableview 函数 begin 和 end updates。

    func keyboardWillHide(notification: NSNotification) {
if let info = notification.userInfo {
self.tableView.beginUpdates()

UIView.animate(withDuration: info[UIKeyboardAnimationDurationUserInfoKey] as! TimeInterval, animations: {
self.setupConstraints()
self.view.layoutIfNeeded()
self.tableView.endUpdates()
})
}
}

关于ios - 键盘动画移动 UITableView 部分标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50099036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com