BBAPannelManager.h 6.79 KB
//
//  BBAPannelManager.h
//  BBAPods
//
//  Created by liurui12 on 16/8/18.
//  Copyright © 2016年 Baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBAGridPannelView.h"
#import "BBAPannelAction.h"
#import "BBAPannelViewController.h"

__attribute__ ((deprecated("该类已被废弃,请勿再使用")))
@interface BBAPannelManager : NSObject

// 菜单栏控制器
@property (nonatomic, strong)BBAPannelViewController *pannelControl;

/*!
 @method
 @brief 返回一个管理器的单例。首次调用将创建此单例。使用者不应对其进行任何引用计数操作。
 @result 管理器单例。
 */
+ (instancetype)sharedInstance;

// 单例提示
- (instancetype)init __attribute__((unavailable("Please use sharedInstance to obtain an instance.")));

/**
 显示菜单

 @param aSuperView 菜单所在父view
 @param actions BBAPannelAction数组,所有action继承自BBAPannelAction
 */
- (void)showPannelInView:(UIView *)aSuperView actions:(NSArray<BBAPannelAction *> *)actions;

/**
  显示菜单
  
  @param aSuperView 菜单所在父view
  @param actions BBAPannelAction数组,所有action继承自BBAPannelAction
  @param configData 配置数据,可配置字体颜色,主题模式等内容
  */
 - (void)showPannelInView:(UIView *)aSuperView
                  actions:(NSArray<BBAPannelAction *> *)actions
               configData:(NSDictionary *)configData;


/**
 显示菜单

 @param aSuperView 菜单所在父view
 @param actions BBAPannelAction数组,所有action继承自BBAPannelAction
 @param headerDataSource 如果传入dataSource将显示header view,现在需要一直为nil
 */
- (void)showPannelInView:(UIView *)aSuperView
                 actions:(NSArray<BBAPannelAction *> *)actions
        headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;

/**
 显示菜单
 
 @param aSuperView 菜单所在父view
 @param actions BBAPannelAction数组,所有action继承自BBAPannelAction
 @param configData 配置数据,可配置字体颜色等内容
 @param headerDataSource 如果传入dataSource将显示header view,现在需要一直为nil
 */
- (void)showPannelInView:(UIView *)aSuperView
                 actions:(NSArray<BBAPannelAction *> *)actions
              configData:(NSDictionary *)configData
        headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;


/**
 显示菜单
 
 @param aSuperView 菜单所在父view
 @param actions BBAPannelAction数组,所有action继承自BBAPannelAction
 @param configData 配置数据,可配置字体颜色等内容
 @param headerDataSource 如果传入dataSource将显示header view,现在需要一直为nil
 @param dismissBlock 菜单消失回调
 */
- (void)showPannelInView:(UIView *)aSuperView
                 actions:(NSArray<BBAPannelAction *> *)actions
              configData:(NSDictionary *)configData
        headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource
            dismissBlock:(void (^)(void))dismissBlock;


/**
 @brief 显示面板              分两行显示,单行滑动,
 @param aSuperView            父级视图
 @param firstRowItems        第一行items数组 (此时如firstRowItems.count == 0, 则整页滑动)
 @param secondRowItems       第二行items数组
 @param configData 配置数据,可配置字体颜色等内容
 @param headerDataSource 如果传入dataSource将显示header view,现在需要一直为nil
 @param dismissBlock 菜单消失回调
 */
- (void)showPannelInView:(UIView *)aSuperView
           firstRowItems:(NSArray<BBAPannelAction *> *)firstRowItems
          secondRowItems:(NSArray<BBAPannelAction *> *)secondRowItems
              configData:(NSDictionary *)configData
        headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource
            dismissBlock:(void (^)(void))dismissBlock;


/**
 @brief 显示面板              整体一起滑动,传入二维数组,暂只支持两行展示,两行一起滑动
 @param superView            父级视图
 @param rowItems    二维数据,展示两行数据分列传入
 @param configData  配置数据,可配置字体颜色等内容
 @param headerDataSource 如果传入dataSource将显示header view,现在需要一直为nil
 @param dismissBlock 菜单消失回调
 */
- (void)showPannelInView:(UIView *)superView
               rowsItems:(NSArray<NSArray<BBAPannelAction *> *> *)rowItems
              configData:(NSDictionary *)configData
        headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource
            dismissBlock:(void (^)(void))dismissBlock;


/**
 菜单是否显示
 
 @return bool值
 */
-(BOOL)isShowing;


/**
 获取菜单视图
 
 @return 菜单view
 */
-(UIView *)pannelFrameView;



/**
 关闭菜单
 
 @param isAnim 是否有动画
 @param coverAnim 蒙层是否有动画
 @completion, completion 动画完成回调
 */
-(void)dismissPannelWithAnimation:(BOOL)isAnim coverViewAnim:(BOOL)coverAnim completion:(void (^)(void))completion;

-(void)dismissPannelWithAnimation:(BOOL)isAnim coverViewAnim:(BOOL)coverAnim;

/**
 关闭字体选择面板
 
 @param animated 是否有动画
 */
- (void)dismissFontPannelWithAnimation:(BOOL)animated;


/**
 刷新菜单数据
 */
-(void)reloadData;

/**
 刷新菜单元素
 
 @param actions actions数组,被传入的action 将被刷新
 */
-(void)reloadActions:(NSArray<BBAPannelAction *> *)actions;

/**
 展示字体设置面板
 
 @param fontLevel 当前的字号(1/2/3/4),分别对应小、中、大、特大
 @param barStyle 适配当前底部导航的主题
 @param changedBlock 字体设置成功的回调
 @param dismissBlock pannel消失的回调
 */
- (void)showFontSliderPannel:(NSString *)fontLevel
            withToolbarStyle:(NSInteger)barStyle
                changedBlock:(void (^)(NSString *fontLevel))changedBlock
                dismissBlock:(void (^)(BOOL sizeChanged))dismissBlock;

- (void)showFontPannelInView:(UIView*)superView
                   fontLevel:(NSString*)fontLevel
                toolbarStyle:(NSInteger)barStyle
                changedBlock:(void (^)(NSString *fontLevel))changedBlock
                dismissBlock:(void (^)(BOOL sizeChanged))dismissBlock;

- (void)updateSeletedPannel:(BBAPannelAction *)action;


/**
 获取cell元素
 
 @param identifier cell的identifier
 @return BBAGridPannelViewCell
 */
- (BBAGridPannelViewCell *)cellForIdentifier:(NSString *)identifier;

/**
 过滤menu中id为 “BBAPannelActionHidden” 的action

 @param items 需要被过滤的items
 @return 过滤后的items
*/
+ (NSArray<BBAPannelAction *> *) bba_menuItemsWithoutHidden: (NSArray<BBAPannelAction *> *)items;

/**
 过滤rowsMenu(二维数组)中id为 “BBAPannelActionHidden” 的action

 @param rowsItems 需要被过滤的items
 @return 过滤后的rowsItems
*/
+ (NSArray<NSArray<BBAPannelAction *> *> *) bba_rowsMenuItemsWithoutHidden: (NSArray<NSArray<BBAPannelAction *> *> *)rowsItems;

@end