如何在 RxSwift 中为整个应用程序中的单元格和按钮设置动画?
Posted
技术标签:
【中文标题】如何在 RxSwift 中为整个应用程序中的单元格和按钮设置动画?【英文标题】:How to animate cells and buttons throughout the app in RxSwift? 【发布时间】:2019-06-03 11:45:47 【问题描述】:我想在我的应用程序中的每个按钮和单元格上制作点击动画,基本上是所有带有动作的视图。每次点击时,我都想要一个灰色的闪烁。
问题如下:我为按钮创建了一个自定义类,整个应用程序的按钮工作正常。问题出在单元格上,因为我尝试制作类似 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
)
显然有一个 dispose 丢失,但如果我在扩展中添加一个 - 没有任何效果。我的问题是:如何制作类似于 rx 的动画,以便它们在应用程序中可见?也许我想多了,有更简单的方法吗?提前谢谢
【问题讨论】:
【参考方案1】:我可以推荐RxDataSources
data.bind(to: tableView.rx.items(cellIdentifier: "Cell")) index, model, cell in
cell.textLabel?.text = model
RxDataSources 提供了两种特殊的数据源类型,它们自动处理绑定数据源中的动画更改:RxTableViewSectionedAnimatedDataSource 和 RxCollectionViewSectionedAnimatedDataSource
【讨论】:
以上是关于如何在 RxSwift 中为整个应用程序中的单元格和按钮设置动画?的主要内容,如果未能解决你的问题,请参考以下文章
RxSwift + UITableViewCell 如何在 heightForRowAt 中获取单元格对象
如何在 UITableView 的 RXswift 和 RXCocoa 中实现 tableview 单元格的内部?
我应该如何访问有关用于使用RxSwift和MVVM填充表格视图的数组的数据