BBAPanelController.h
4.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//
// BBAPanelController.h
// BBAUIKit
//
// Created by Guo,Zhaozhuo on 2020/3/12.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "BBAPanelItem.h"
#import "BBAPanelConfigModel.h"
#import "BBAPanelGridGroupModel.h"
#import "BBAPanelView.h"
typedef void(^BBAPanelViewCallBack)(void);
@protocol BBAGridPanelControllerDelegate <NSObject>
/// 面板item即将展示回调方法
/// @param itemView 将要展示的item的内容view
/// @param groupIndex item所在groupIndex
/// @param indexPath item的indexPath
- (void)gridPanelWillDisplayItemView:(UIView *)itemView
itemInGroup:(NSInteger)groupIndex
itemAtIndexPath:(NSIndexPath *)indexPath;
/// 面板item即将消失回调方法
/// @param itemView 将要消失的item的内容view
/// @param groupIndex item所在groupIndex
/// @param indexPath item的indexPath
- (void)gridPanelDidEndDisplayItemView:(UIView *)itemView
itemInGroup:(NSInteger)groupIndex
itemAtIndexPath:(NSIndexPath *)indexPath;
@end
@interface BBAPanelController : NSObject
/// 设置面板弹出后回调block(动画后)
@property (nonatomic, copy) BBAPanelViewCallBack didPanelShownCallback;
/// 设置面板消失回调block(动画后)
@property (nonatomic, copy) BBAPanelViewCallBack didPanelDismissCallback;
/// 网格布局面板的代理
@property (nonatomic, weak) id<BBAGridPanelControllerDelegate> panelDelegate;
/// 根视图
@property (nonatomic, strong, readonly) UIView *view;
/// 展示带有取消或关闭按钮样式面板 返回面板控制器示例
/// @param panelView 自定义面板视图
/// @param config 可设置圆角
+ (instancetype)presentPanelView:(UIView *)panelView
config:(BBAPanelConfigModel *)config;
/// 展示完全自定义内容的面板 返回面板控制器示例
/// @param customView 自定义视图
/// @param config 可设置圆角
+ (instancetype)presentCustomPanel:(UIView *)customView
config:(BBAPanelConfigModel *)config;
/// 隐藏当前展示的面板
/// @param anim 是否带动画
+ (void)dissmissCurrentPanel:(BOOL)anim;
/// 获取当前展示的面板控制器
+ (instancetype)currentPanelController;
/// 关闭面板
/// @param anim 是否执行消失动画
- (void)dissmissPanel:(BOOL)anim;
/// 获取面板中部内容视图(不包括顶部视图和取消按钮)
- (UIView *)getPanelContentView;
/// 当面板已展示时,添加面板挂件视图
/// @param pendantView 添加的自定义视图
/// @param offset 视图底部相对于面板顶部在 y轴 上的偏移量,0代表视图底部跟面板顶部对齐,负数代表向上偏移,正数代表向下偏移
- (void)addPanelPendantView:(UIView *)pendantView yOffset:(CGFloat)offset;
/// 移除面板挂件视图
- (void)removePanelPendantView;
#pragma mark 网格布局方法
/// 显示网格样式面板 返回面板控制器示例
/// @param headerView 自定义面板头部部分视图
/// @param gridModel 网格样式布局设置,及itemData
/// @param config 面板样式参数,用于制定主题样式以及圆角大小、背景色style
+ (instancetype)presentPanelWithHeaderView:(UIView *)headerView
gridPanelModel:(BBAPanelGridGroupModel *)gridModel
config:(BBAPanelConfigModel *)config;
/// 显示网格样式面板 返回面板控制器示例,按需分配持有
/// @param headerView 自定义面板头部部分视图
/// @param gridModels 多组网格,网格样式布局设置,及itemData
/// @param config 面板样式参数,用于制定主题样式以及圆角大小、背景色style
+ (instancetype)presentPanelWithHeaderView:(UIView *)headerView
gridPanelModels:(NSArray<BBAPanelGridGroupModel *> *)gridModels
config:(BBAPanelConfigModel *)config;
/// 网格布局样式下,刷新面板
- (void)reloadData;
/// 网格布局样式下,刷新面板元素
/// @param items BBAPanelItem 数组,被传入的items将被刷新,非BBAPanelItem类型传入无效
- (void)reloadItems:(NSArray<BBAPanelItem *> *)items;
/// 网格布局样式下,主动获取指定item视图
/// @return 返回指定位置的item的内容区域视图
/// @param groupIndex item所在的groupIndex
/// @param indexPath item的indexPath
- (UIView *)gridPanelItemViewAtGroup:(NSInteger)groupIndex indexPath:(NSIndexPath *)indexPath;
/// 更新面板视图变化
- (void)relayoutPanelView;
@end