|
//
// 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()
func navigationBarFadeOut()
func navigationBarFadeAndMoveIn()
func navigationBarFadeAndMoveOut()
func navigationBarFadeOutWithPercentage(_ percentage: CGFloat)
func navigationBarFadeInWithPercentage(_ percentage: CGFloat)
}
public extension NavigationBarInOutAnimator where Self: UIViewController & NavigationBarPushAndPopDelegate {
func navigationBarFadeIn() {
UIView.animate(withDuration: 0.3, animations: {
self.navigationView.alpha = 1
}, completion: nil)
}
func navigationBarFadeOut() {
UIView.animate(withDuration: 0.3, animations: {
self.navigationView.alpha = 0
}, completion: nil)
}
func navigationBarFadeAndMoveIn() {
setNavigationBar()
navigationController?.navigationBar.layoutIfNeeded()
let originX = navigationView.center.x
navigationView.center.x = UIScreen.main.bounds.width
UIView.animate(withDuration: 0.3, animations: {
self.navigationView.alpha = 1
self.navigationView.center.x = originX
}, completion: nil)
}
func navigationBarFadeAndMoveOut() {
UIView.animate(withDuration: 0.3, animations: {
self.navigationView.alpha = 0
self.navigationView.center.x = UIScreen.main.bounds.width
}, completion: { _ in
self.navigationView.removeFromSuperview()
})
}
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
}
}
|