Files
Woka_Native_iOS/WOKA/TabBar & SideMenu/SideMenu/Delegate.swift

104 lines
4.3 KiB
Swift

//
// SideMenuControllerDelegate.swift
// SideMenu
//
// Created by kukushi on 2018/8/8.
// Copyright © 2018 kukushi. All rights reserved.
//
import Foundation
import UIKit
// Delegate Methods
public protocol SideMenuControllerDelegate: AnyObject {
// MARK: Animation
/// Called to allow the delegate to return a non-interactive animator object for use during view controller transitions.
/// Same with UIKit's ``navigationController(_:animationControllerFor:from:to:)``.
///
/// - Parameters:
/// - sideMenuController: The side menu controller
/// - fromVC: The currently visible view controller.
/// - toVC: The view controller that should be visible at the end of the transition.
/// - Returns: The animator object responsible for managing the transition animations,
/// or nil if you want to use the fade transitions.
func sideMenuController(_ sideMenuController: SideMenuController,
animationControllerFrom fromVC: UIViewController,
to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
// MARK: Switching
/// Side menu will show a view controller.
///
/// - Parameters:
/// - sideMenuController: current side menu controller
/// - viewController: the view controller to show
/// - animated: whether it's animated
func sideMenuController(_ sideMenuController: SideMenuController, willShow viewController: UIViewController, animated: Bool)
/// Side menu did showed a view controller.
///
/// - Parameters:
/// - sideMenuController: current side menu controller
/// - viewController: the view controller shown
/// - animated: whether it's animated
func sideMenuController(_ sideMenuController: SideMenuController, didShow viewController: UIViewController, animated: Bool)
// MARK: Revealing
/// Asks the delegate whether the side menu should be shown.
///
/// Triggered by the pan gesture.
/// - Parameter sideMenuController: The side menu
/// - Returns: Whether the menu should be revealed.
func sideMenuControllerShouldRevealMenu(_ sideMenuController: SideMenuController) -> Bool
/// Side menu is going to reveal.
///
/// - Parameter sideMenu: The side menu
func sideMenuControllerWillRevealMenu(_ sideMenuController: SideMenuController)
/// Side menu did revealed.
///
/// - Parameter sideMenu: The side menu
func sideMenuControllerDidRevealMenu(_ sideMenuController: SideMenuController)
/// Side menu is going to hide.
///
/// - Parameter sideMenu: The side menu
func sideMenuControllerWillHideMenu(_ sideMenuController: SideMenuController)
/// Side menu did hided.
///
/// - Parameter sideMenu: The side menu
func sideMenuControllerDidHideMenu(_ sideMenuController: SideMenuController)
/// Get the width of side menu in current size
/// - Parameter sideMenuController: The side menu
func sideMenuControllerGetMenuWidth(_ sideMenuController: SideMenuController, for size: CGSize) -> CGFloat?
}
// Provides default implementation for delegates
public extension SideMenuControllerDelegate {
func sideMenuController(_ sideMenuController: SideMenuController,
animationControllerFrom fromVC: UIViewController,
to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return nil
}
func sideMenuController(_ sideMenuController: SideMenuController,
willShow viewController: UIViewController,
animated: Bool) {}
func sideMenuController(_ sideMenuController: SideMenuController,
didShow viewController: UIViewController,
animated: Bool) {}
func sideMenuControllerShouldRevealMenu(_ sideMenuController: SideMenuController) -> Bool { true }
func sideMenuControllerWillRevealMenu(_ sideMenuController: SideMenuController) {}
func sideMenuControllerDidRevealMenu(_ sideMenuController: SideMenuController) {}
func sideMenuControllerWillHideMenu(_ sideMenuController: SideMenuController) {}
func sideMenuControllerDidHideMenu(_ sideMenuController: SideMenuController) {}
func sideMenuControllerGetMenuWidth(_ sideMenuController: SideMenuController, for size: CGSize) -> CGFloat? { nil }
}