我有像创建可扩展表视图单元这样的常规任务。 由于我的模块是使用RxSwift编写的,因此我决定将此框架用于特定任务。 虽然,我的解决方案满足功能要求,但我想改进UI。到目前为止,当我取消选择我的手机时,我的动画非常粗糙。
以下是我的布局:
TableViewCell
-ContentView
--StackView
---MainView
---ExandableView
因此,当我点击一个单元格时,我的ExpandableView
正在建立。
class ExpandableCell: UITableViewCell {
@IBOutlet weak var expandableView: UIView!
@IBOutlet weak var faqArrowImageView: UIImageView!
var isExpanded:Bool = false
{
didSet
{
self.expandableView.isHidden = !self.isExpanded
self.faqArrowImageView.image = self.isExpanded ? UIImage(named: "faq-arrow") : UIImage(named: "faq-arrow-rotated")
}
}
}
在我的VC中,我有这样的订阅,它处理主要的业务逻辑
faqTableView.rx.itemSelected
.subscribe(onNext: { [unowned self] indexPath in
print("Index path is \(indexPath.row)")
let cell = self.faqTableView.cellForRow(at: indexPath) as! ExpandableCell
switch cell.isExpanded {
case true:
self.expandedRows.remove(indexPath.row)
case false:
self.expandedRows.insert(indexPath.row)
}
cell.isExpanded = !cell.isExpanded
self.faqTableView.beginUpdates()
self.faqTableView.endUpdates()
}).addDisposableTo(disposeBag)
正如我所说,我对隐藏我的观点进行粗略处理。 以下是此问题的演示https://www.dropbox.com/s/1h18a2u1mpuyiuo/animation.gif?dl=0
此外,我尝试在我的变量的didSet
中以下列方式添加动画。
但是,stil,它也没有帮助我
UIView.animate(withDuration: 10.2, delay: 10.2, options:
UIViewAnimationOptions.curveEaseOut, animations: {
self.faqArrowImageView.image = UIImage(named: "faq-arrow-rotated")
}, completion: { finished in
print("animted completed")
})
} else {
self.faqArrowImageView.image = UIImage(named: "faq-arrow")
}
在下列情况下你能给我什么建议?
修改 好吧,如果有人面临这个问题,我只需要改变
self.faqTableView.beginUpdates()
self.faqTableView.endUpdates()
到
self.faqTableView.reloadData()