#ios #swift #uitableview
#iOS #swift #uitableview
Вопрос:
Я пытаюсь анимировать представление таблицы для перемещения вверх при появлении клавиатуры (я не хочу использовать для этого вставку содержимого, потому что у меня есть дополнительный вид). У меня есть следующий код:
view.addSubview(tableView)
tableView.translatesAutoresizingMaskIntoConstraints = false
let tableViewBottomConstraint = NSLayoutConstraint(
item: tableView,
attribute: .bottom,
relatedBy: .equal,
toItem: view,
attribute: .bottom,
multiplier: 1.0,
constant: 0.0
)
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])
view.addConstraint(tableViewBottomConstraint)
self.tableViewBottomConstraint = tableViewBottomConstraint
view.addSubview(messageTextView)
messageTextView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
messageTextView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
messageTextView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
messageTextView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
Когда я получаю уведомление с клавиатуры, я делаю следующее:
tableViewBottomConstraint?.constant = info.endFrame.height
UIView.animate(
withDuration: info.animationDuration,
delay: 0.0,
options: info.animationOptions,
animations: {
self?.view?.layoutIfNeeded()
},
completion: nil
Однако ничего не происходит. Представление таблицы вообще не перемещается. Что я здесь делаю не так?
Ответ №1:
Вам может понадобиться
tableViewBottomConstraint?.constant = -1 * info.endFrame.height
Причина в том, что вместо того, чтобы вырезать постоянное значение, которое вы добавляете к нему, таблица увеличивается в высоту