BBACommonPopupMenuController.h 3.7 KB
//
//  BBACommonPopupMenuController.h
//  BBAUIKit
//
//  Created by Ning,Liujie on 2020/7/15.
//  Copyright © 2020 Baidu. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "BBACommonPopupMenuItem.h"
#import "BBACommonPopupMenuDefine.h"

typedef NS_ENUM(NSInteger, BBACommonPopupMenuShowType) {
    BBACommonPopupMenuShowTypeListView,     // 列表样式
    BBACommonPopupMenuShowTypeCustomView    // 自定义View
};

typedef void (^popupMenuHide)(void);

@class BDPWindow;

NS_ASSUME_NONNULL_BEGIN

@interface BBACommonPopupMenuController : NSObject

/// 展示的menu 的样式
@property (nonatomic, assign) BBACommonPopupMenuShowType menuShowType;
/// 菜单隐藏
@property (nonatomic, copy) popupMenuHide hideCallBack;

@property (nonatomic, weak) BDPWindow *window;
/**
* 初始化展示的BBACommonPopupMenuViewController
*
* @param itemArray 列表的数据 ,最多显示8个
* @param targetView 需要显示在传入的View 的上方或者下方,取传入view 的中点的上边缘或者下边缘确定箭头的显示位置,弹出弹框,如果没有箭头,则基于中点位置,进行布局
* @param showArrow 是否需要箭头
* @param arrowDirection 箭头方向,传入对应的的方向,内部会优先向传入的方向弹出,如果弹出的方向,展示不下,会进行展示方向判断,展示规则同弹框展示规则
* @param showMask 是否需要蒙层,不透明度50%
* @param positionOffset 位置偏移值
* @param offsetBaseline 默认不进行处理,选择不同的基线,以选择的基线,正数向右偏移,负数向左偏移
* @param itemClickBlock item点击的回调事s件
*/
- (instancetype)initWithItems:(NSArray <BBACommonPopupMenuItem *> *)itemArray
                   targetView:(UIView *)targetView
                    showArrow:(BOOL)showArrow
               arrowDirection:(BBACommonPopupMenuArrowDirection)arrowDirection
                     showMask:(BOOL)showMask
               positionOffset:(CGFloat)positionOffset
               offsetBaseline:(BBACommonPopupMenuPositionOffsetBaseline)offsetBaseline
                    itemClick:(void(^)(NSInteger index))itemClickBlock;

/**
* 初始化展示的BBACommonPopupMenuViewController
*
* @param customView 自定义的view
* @param targetView 需要显示在哪个View 附近
* @param showMask 是否需要蒙层,不透明度50%
* @param showArrow 是否需要箭头
* @param arrowDirection 箭头方向,传入对应的的方向,内部会优先向传入的方向弹出,如果弹出的方向,展示不下,会进行展示方向判断,展示规则同弹框展示规则
* @param positionOffset 位置偏移值
* @param offsetBaseline 默认不进行处理,选择不同的基线,以选择的基线,正数向右偏移,负数向左偏移
*/
- (instancetype)initWithCustomView:(UIView *)customView
                        targetView:(UIView *)targetView
                          showMask:(BOOL)showMask
                         showArrow:(BOOL)showArrow
                    arrowDirection:(BBACommonPopupMenuArrowDirection)arrowDirection
                    positionOffset:(CGFloat)positionOffset
                    offsetBaseline:(BBACommonPopupMenuPositionOffsetBaseline)offsetBaseline;


- (void)setup;
/**
* 隐藏popupMenu
*
*/
- (void)hideWithAnimation:(BOOL)isAnimation;

/**
* 初始化展示的popupMenu的列表
*
* @param itemArray 列表的数据
*/
- (void)updateWithItems:(NSArray <BBACommonPopupMenuItem *> *)itemArray;

/**
* 外部更新了已加入列表的数据,需要更新列表,调用该方法进行界面刷新
*
*/
- (void)reloadData;

/**
* 更新展示的popupMenu的自定义View
*
* @param customView 自定义的视图
*/
- (void)updateWithCustomView:(UIView *)customView;


@end

NS_ASSUME_NONNULL_END