Nav apraksta

NavigationBarInOutAnimator.swift 2.7KB

    // // NavigationBarInOutAnimator.swift // PaiaiUIKit // // Created by ffib on 2019/1/15. // Copyright © 2019 yb. All rights reserved. // import UIKit public protocol NavigationBarInOutAnimator: class { var navigationView: UIView { get } func navigationBarFadeIn(percentage: CGFloat) func navigationBarFadeOut(percentage: CGFloat) func navigationBarFadeAndMoveIn(percentage: CGFloat) func navigationBarFadeAndMoveOut(percentage: CGFloat) func navigationBarFadeOutWithPercentage(_ percentage: CGFloat) func navigationBarFadeInWithPercentage(_ percentage: CGFloat) } public extension NavigationBarInOutAnimator where Self: UIViewController & NavigationBarPushAndPopDelegate { func navigationBarFadeIn(percentage: CGFloat) { UIView.animate(withDuration: TimeInterval(0.3 * percentage), animations: { self.navigationView.alpha = 1 }, completion: nil) } func navigationBarFadeOut(percentage: CGFloat) { UIView.animate(withDuration: TimeInterval(0.3 * percentage), animations: { self.navigationView.alpha = 0 }, completion: nil) } func navigationBarFadeAndMoveIn(percentage: CGFloat) { // setNavigationBar() // navigationController?.navigationBar.layoutIfNeeded() // let originX = navigationView.center.x // navigationView.center.x = UIScreen.main.bounds.width UIView.animate(withDuration: TimeInterval(0.3 * percentage), animations: { self.navigationView.alpha = 1 self.navigationView.center.x = UIScreen.main.bounds.width / 2 }, completion: { flag in // if flag { self.setNavigationBar() // } print("move in \(flag)") }) } func navigationBarFadeAndMoveOut(percentage: CGFloat) { print(self.navigationView.center) UIView.animate(withDuration: TimeInterval(0.3 * percentage), animations: { self.navigationView.alpha = 0 self.navigationView.center.x = UIScreen.main.bounds.width }, completion: { flag in // if flag { self.navigationView.removeFromSuperview() // } print("move out \(flag)") }) } func navigationBarFadeOutWithPercentage(_ percentage: CGFloat) { navigationView.alpha = 1 * (1 - 1.1 * percentage) navigationView.center.x = UIScreen.main.bounds.width / 2 * (1 + 1.1 * percentage) } func navigationBarFadeInWithPercentage(_ percentage: CGFloat) { navigationView.alpha = 1 * percentage } }