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

#import <Foundation/Foundation.h>
#import "BBAPannelAction.h"
#import "BBAGridPannelViewCell.h"
//#import "BBAshare.h"

//面板蒙层消失时间
#define kMenuPannelDismissDuration   0.16f

//面板生命周期的通知
#define BBAPannelViewWillAppear @"BBAPannelViewWillAppear"
#define BBAPannelViewWillDisappear @"BBAPannelViewWillDisappear"

/// didAppear didDisappear 通知V11.23后废弃,勿用
#define BBAPannelViewDidAppear @"BBAPannelViewDidAppear"
#define BBAPannelViewDidDisappear @"BBAPannelViewDidDisappear"

@protocol BBAGridPannelHeaderDataSource;
typedef void(^BBAPannelDismissBlock)(void);

@interface BBAPannelViewController : UIViewController

/*!
 @property
 @brief 面显示状态。
 */
@property (nonatomic) BOOL isShowing;

@property (nonatomic) BOOL isFontPannelShowing;

/*!
 @property
 @brief 关闭面板回调block
 */
@property (nonatomic, copy) void(^dismissBlock)(void);


@property (nonatomic, strong)BBAPannelAction *seletedPannelAction;

/*!
 @brief 显示面板 整页滑动。
 @param superView          父级视图
 @param actions             action数组
 @param configData        包含contenInsets:pannel 父级遮罩insets等信息
 @param headerDataSource    如果传入dataSource将显示header view
 */
- (void)presentView:(UIView *)superView
            actions:(NSArray<BBAPannelAction *> *)actions
         configData:(NSDictionary *)configData
   headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;

- (void)presentView:(UIView *)superView
            actions:(NSArray<BBAPannelAction *> *)actions
   headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;

/*!
 @brief 显示面板              分两行显示,单行滑动,
 @param superView            父级视图
 @param firstRowItems        第一行items数组 (此时如firstRowItems.count == 0, 则整页滑动)
 @param secondRowItems       第二行items数组
 @param configData           包含contenInsets:pannel 父级遮罩insets等信息
 @param headerDataSource     如果传入dataSource将显示header view
 */

- (void)presentView:(UIView *)superView
      firstRowItems:(NSArray<BBAPannelAction *> *)firstRowItems
     secondRowItems:(NSArray<BBAPannelAction *> *)secondRowItems
         configData:(NSDictionary *)configData
   headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;

- (void)presentView:(UIView *)superView
      firstRowItems:(NSArray<BBAPannelAction *> *)firstRowItems
     secondRowItems:(NSArray<BBAPannelAction *> *)secondRowItems
   headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;

- (BBAGridPannelViewCell *)cellForIdentifier:(NSString *)identifier;

/*!
 @method
 @brief 显示面板。
 @param superView 父级视图
 @param actions    action数组
 */
- (void)presentView:(UIView *)superView actions:(NSArray<BBAPannelAction *> *)actions;

/*!
@method 传入二维数组菜单多行(暂时只支持两行)数据分别传入
@brief 显示面板。
@param superView 父级视图
@param rowsItems    action二维数组
@param configData        包含contenInsets:pannel 父级遮罩insets等信息
@param headerDataSource    如果传入dataSource将显示header view
*/
- (void)presentView:(UIView *)superView
          rowsItems:(NSArray<NSArray<BBAPannelAction *> *> *)rowsItems
         configData:(NSDictionary *)configData
   headerDataSource:(id<BBAGridPannelHeaderDataSource>)headerDataSource;


/*!
 @method
 @brief 关闭面板
 @anim,coverAnim 是否播放动画
 @completion, completion 动画完成回调
 */
- (void)dissmiss:(BOOL)anim coverViewAnim:(BOOL)coverAnim completion:(void (^)(void))completion;

/*!
 @method
 @brief 关闭字体选择面板
 @anim 是否播放动画
 */
- (void)dissmissFontPannelView:(BOOL)anim;

/*!
 @method
 @brief 刷新面板
 */
-(void)reloadData;


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

/*!
 *  @brief 展示字体设置面板
 *
 *  @param fontLevel 当前的字号(1/2/3/4),分别对应小、中、大、特大
 *  @param barStyle 适配当前底部导航的主题
 *  @param changedBlock 字体设置成功的回调
 *  @param dismissBlock 字体设置面板消失的回调
 *
 */
- (void)showFontPannel:(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;

/*!
 *  @brief 设置面板背景色
 *
 *  @param bgColor 设置面板当前的背景色,若为nil,不更新背景色
 *
 */
- (void)changePannelViewBGColor:(UIColor *)bgColor;

/*!
 *  @brief 设置面板取消按钮文字颜色
 *
 *  @param textColor 设置取消按钮的文字颜色,若为nil,不更新文字颜色
 *  @param highTextColor 设置取消按钮选中的文字颜色,若为nil,不更新文字颜色
 *
 */
- (void)changeCancelButtonTextColor:(UIColor *)textColor highTextColor:(UIColor *)highTextColor;

@end