Как анимировать ячейки и кнопки в приложении в RxSwift? - PullRequest
0 голосов
/ 03 июня 2019

Я хочу сделать анимацию кликов для каждой кнопки и ячейки в моем приложении, в основном для всех представлений с действиями. При каждом щелчке хочу сероватое мигание.

Проблема заключается в следующем: я создал собственный класс для кнопки, и кнопки в приложении работают просто отлично. Проблема с клетками, поскольку я пытаюсь сделать анимацию похожей на rx. У меня есть ячейки UITableView, а также ячейки UICollectionView и некоторые виды здесь и там, поэтому я попытался создать расширение UIView, которое распознает касания и, если оно есть, воспроизводится анимация. Я пытался сделать это с расширением:

import UIKit
import RxSwift

extension UIView {
    func makeSelectionIndicatable(forInitialBackgroundColor color: UIColor) {
        let tapGesture = UILongPressGestureRecognizer()
        tapGesture.minimumPressDuration = 0
        tapGesture.cancelsTouchesInView = false
        addGestureRecognizer(tapGesture)

        tapGesture.rx.event.bind(onNext: { [weak self] recognizer in
            if recognizer.state == .began {
                self?.backgroundColor = .global(color: .athens_gray)
            }
            if recognizer.state == .ended {
                self?.backgroundColor = color
            }
            if recognizer.state == .cancelled {
                self?.backgroundColor = color
            }
        })
    }
}

Очевидно, что удаление отсутствует, но если я добавлю его в расширение - ничего не получится. Мой вопрос: как сделать анимацию похожей на rx, чтобы она была видна через приложение? Может я обдумываю и есть более простые способы? Спасибо заранее

1 Ответ

1 голос
/ 03 июня 2019

Я могу порекомендовать RxDataSources

data.bind(to: tableView.rx.items(cellIdentifier: "Cell")) { index, model, cell in
  cell.textLabel?.text = model
}

RxDataSources предоставляет два специальных типа источника данных, которые автоматически обеспечивают анимацию изменений в связанном источнике данных: RxTableViewSectionedAnimatedDataSource и RxCollectionViewSectionedAnimatedDataSource

...