|
//
// 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
}
}
|