Add animation to folder selection and backward

This commit is contained in:
Bob Sun 2017-03-23 22:46:50 -07:00
parent 0507c7cdd7
commit f1c07f358e
No known key found for this signature in database
GPG key ID: 1F86BA2052FED3B4

View file

@ -54,6 +54,26 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
let backUIBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(self.backAction(_:)))
return backUIBarButtonItem
}()
lazy var transitionFromRight: CATransition = {
let transition = CATransition()
transition.type = kCATransitionPush
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.fillMode = kCAFillModeForwards
transition.duration = 0.25
transition.subtype = kCATransitionFromRight
return transition
}()
lazy var transitionFromLeft: CATransition = {
let transition = CATransition()
transition.type = kCATransitionPush
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.fillMode = kCAFillModeForwards
transition.duration = 0.25
transition.subtype = kCATransitionFromLeft
return transition
}()
@IBOutlet weak var tableView: UITableView!
@ -244,14 +264,14 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
tableView.deselectRow(at: indexPath, animated: true)
searchController.isActive = false
initPasswordsTableEntries(parent: entry.passwordEntity)
reloadTableView(data: passwordsTableEntries)
reloadTableView(data: passwordsTableEntries, anim: transitionFromRight)
}
}
func backAction(_ sender: Any?) {
guard Defaults[.isShowFolderOn] else { return }
initPasswordsTableEntries(parent: parentPasswordEntity?.parent)
reloadTableView(data: passwordsTableEntries)
reloadTableView(data: passwordsTableEntries, anim: transitionFromLeft)
}
func longPressAction(_ gesture: UILongPressGestureRecognizer) {
@ -416,16 +436,21 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV
refreshControl.attributedTitle = NSAttributedString(string: atribbutedTitle)
}
func reloadTableView(data: [PasswordsTableEntry]) {
setNavigationItemTitle()
func reloadTableView(data: [PasswordsTableEntry], anim: CAAnimation? = nil) {
if parentPasswordEntity != nil {
navigationItem.leftBarButtonItem = backUIBarButtonItem
} else {
navigationItem.leftBarButtonItem = nil
}
generateSections(item: data)
if anim != nil {
self.tableView.layer.add(anim!, forKey: "UITableViewReloadDataAnimationKey")
}
tableView.reloadData()
self.tableView.layer.removeAnimation(forKey: "UITableViewReloadDataAnimationKey")
updateRefreshControlTitle()
setNavigationItemTitle()
}
func handleRefresh(_ refreshControl: UIRefreshControl) {