UIPickerView внутри статической анимации UITableViewCell при обновлении высоты ячейки - PullRequest
0 голосов
/ 21 июня 2019

У меня есть статический 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

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Разобрался. Мое нижнее ограничение UIPickerView было установлено в нижней части представления содержимого, константа была 0. Изменила его на <= 0 и исправила. Не понимаю, почему 0 не работает. По крайней мере, я понял это ... </p>

0 голосов
/ 21 июня 2019

Используйте self.tableView.reloadRows(at: IndexPath(row: indexPath.row, section: indexPath.section), with: .fade) вместо beginUpdates / endUpdates.Это даст вам плавную анимацию при смене анимации таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...