У меня есть статический UITableView
, в котором у меня есть UIPickerView
внутри UITableViewCell
.При запуске didSelectRowAt
предполагается переключать высоту ячейки с UIPickerView
.Я использую beginUpdates()
и endUpdates()
, чтобы изменить высоту ячейки.Он выглядит правильно при расширении, но при свертывании UIPickerView
не анимируется и разрушается быстрее, чем ячейка.Не уверен, что я делаю не так.
Я убедился, что все представления установлены на true
для clipToBounds
на UITableViewCell
, ContentView (UITableViewCell
) и UIPickerView
.Я попытался обернуть beginUpdates / endUpdates в DispatchQueue.main.async
.Мой UIPickerView
использует AutoLayout и (передний, задний, верхний, нижний) края равны представлению содержимого ячейки.Я использую StoryBoard для моего пользовательского интерфейса.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch (indexPath.section, indexPath.row) {
case (1,1):
showPicker = !showPicker
tableView.beginUpdates()
tableView.endUpdates()
default:
()
}
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
switch (indexPath.section, indexPath.row) {
case (1, 1):
if !showDueDate {
return 0
}
case (1, 2):
if !showPicker {
return 0
}
case (_, _):
break
}
return super.tableView(tableView, heightForRowAt: indexPath)
}
Я ожидал, что анимация будет плавной и UIPickerView
свернется вместе с UITabeViewCell
.
см. Рисунок, чтобы увидеть проблему
через GIPHY