我有和表格视图,当用户点击按钮时,我希望它重新加载它的数据并更改许多其他内容。遗憾的是,我的用户对过渡/动画的可用选项并不满意,并希望进行滑动过渡。但是,我在网上找不到任何东西。这是我的代码:
*
谢谢。
答案 0 :(得分:2)
你可以在这上学:
view
; view
本身; transform
的恢复动画回.identity
;和因此:
let snapshotView = snapshot()
view.addSubview(snapshotView)
snapshotView.transform = CGAffineTransform(translationX: -view.bounds.size.width, y: 0)
view.transform = CGAffineTransform(translationX: view.frame.size.width, y: 0)
// do whatever updates to the views you want here
tableView.reloadData()
UIView.animate(withDuration: 0.5, animations: {
self.view.transform = .identity
}, completion: { _ in
snapshotView.removeFromSuperview()
})
对于快照,我使用了:
func snapshot() -> UIView {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let imageView = UIImageView(image: image)
imageView.frame = view.bounds
return imageView
}
顺便说一下,你也可以使用比drawHierarchy
更快的snapshotView(afterScreenupdates:)
,但由于某些原因它不能在7+模拟器中工作(参见https://forums.developer.apple.com/thread/63438)所以我对此并不是很满意。但是如果你想这样做,你可以用{:1>替换shapshotView
声明
let snapshotView = view.snapshotView(afterScreenUpdates: false)!