UIViewController+BBAToolBar.h
7.5 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
//
// UIViewController+BBAToolBar.h
// BBAPods
//
// Created by liuboyang01 on 16/8/17.
// Copyright © 2016年 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "BBAToolBar.h"
#import "BBAPannelManager.h"
#import "BBAPannelAction.h"
#import "BBAPannelCommon.h"
#import "UIViewController+BBAPannel.h"
/*
使用方法:
1,使用需要引用"UIViewController+BBAToolBar.h"
2,调用showToolBarWithItems显示toolBar,items可以为空
3,toolBar的定制参考UIToolBar控件,通过BBAToolBarItem定制每个按钮
4,BBAToolBarItem支持手百自带BBAToolBarSystemItemID的样式,也可以通过userCustomView自定义,
每个BBAToolBarItem都有一个itemID,如果是自定义的注意不要和BBAToolBarSystemItemID相同,id值最好小于BBAToolBarSystemItemIDBack
5,toolBar支持飘新,通过BBAToolBarItem的badgeValue设置,更新badgeValue的值需要调用toolBar的relayoutToolBar重新绘制
6,BBAToolBarItem之间的间距通过BBAToolBarSystemItemIDFlexibleSpace或者BBAToolBarSystemItemIDFixedSpace调节
7,自定义组件,横屏toolbar各个组件重新排列处理方式为通过设置userCustomView的autoresizingMask属性实现,参见autoresizingMask的文档
*/
@interface UIViewController (BBAToolBar)
// 如果没有调用showToolBar则返回nil
@property (nonatomic, strong, readonly, nullable) BBAToolBar *bba_toolBar;
// 移除toolBar
- (void)bba_removeToolBar;
// 在当前viewcontroller视图层级最前面显示BBAToolBar,items为空则显示一个空的toolbar。hidden为YES,则创建一个隐藏在屏幕底部的BBAToolBar。
- (BBAToolBar * _Nullable)bba_showToolBarWithItems:(NSArray< BBAToolBarItem * > *_Nullable)items shouldBehidden:(BOOL)hidden;
@end
@interface UIViewController (BBANavigationToolbar)
typedef void(^BBAGoHomeBlock)(NSDictionary * _Nullable extraInfo);
typedef void(^BBAGoBackBlock)(void);
//返回到Home时通知栈底元素(仅栈底元素会被通知)
@property (nonatomic, strong, nullable) BBAGoHomeBlock bbaGoHomeBlock;
//返回事件,默认为nil,若设置,则VC需自行管理pop操作
@property (nonatomic, strong, nullable) BBAGoBackBlock bbaGoBackBlock;
//是否隐藏ToolBarMenu
@property (nonatomic, assign) BOOL bbaHiddenToolBarMenu;
//item元素
@property (nonatomic, strong, readonly, nullable) NSArray<BBAToolBarItem *>* bbaToolbarItems;
//入栈后才会产生Toolbar实例
@property (nonatomic, strong, readonly, nullable) BBAToolBar *bbaNavigationToolBar;
//在没有设置ToolbarItems前提下设置为YES,栈底元素底bar显示“菜单”项;非栈底元素显示"返回"、"主页"、“菜单”三项。默认为NO
@property (nonatomic, assign) BOOL bbaShowNavigationToolBar;
//如果vc需要支持退出全屏(显示底bar)功能,则设置为YES,初始化一个隐藏的底bar。默认为NO
@property (nonatomic, assign) BOOL bbaFullScreenByNaviToolBarEnabled;
//顶部导航栏左侧按钮是否可用,默认不可用(隐藏).
@property (nonatomic, assign) BOOL bbaEnableNavigationBarLeftItem;
/**
* @brief 设置底部导航栏元素.
*
* @param toolbarItems 所有菜单项
*
*/
- (void)setBBAToolbarItems:(nullable NSArray<BBAToolBarItem *> *)toolbarItems animated:(BOOL)animated;
/**
* @brief 设置底部导航栏事件.
*
*
* @return 返回v成功结果
*/
- (BOOL)bbaToolBarSetTarget:(nullable id)target
action:(nullable SEL)action
withItemID:(BBAToolBarSystemItemID)itemID;
/**
* @brief 获取导航工具栏默认高度
*
* @return 返回导航工具栏默认高度
*/
+ (CGFloat)bbaNavigationToolbarDefaultHeight;
/**
* @brief 设置底部导航栏菜单选项.
*
* @param menuItems 所有菜单项
*
*/
- (void)setBBAMenuItems:(nullable NSArray<BBAPannelAction *> *)menuItems __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
- (nullable NSArray<BBAPannelAction *> *)bbaMenuItems __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
/**
* @brief 设置底部导航栏菜单选项.
*
*/
- (nullable NSArray<NSArray<BBAPannelAction *> *> *)bbaMenuRowsItems __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
- (void)setBBAMenuRowsItems:(nullable NSArray<NSArray<BBAPannelAction *> *> *)bbaMenuRowsItems __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
/**
* @brief 设置底部导航栏菜单header dataSource.
*
*
*/
- (void)setBBAMenuHeaderDataSource:(nullable id<BBAGridPannelHeaderDataSource>)dataSource __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
- (nullable id<BBAGridPannelHeaderDataSource>)bbaMenuHeaderDataSource __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
/**
* @brief 设置底部导航栏菜单样式
*
*
*/
- (void)setBBAMenuConfigData:(NSDictionary * _Nonnull )configData __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
- (nullable NSDictionary *)bbaMenuConfigData __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
/**
* @brief 返回主页, 导航默认方法(其他自定义导航工具条返回首页事件最终必须调用此方法)
*
*/
- (void)bbaGoHome;
/**
* @brief 返回主页, 导航默认方法(其他自定义导航工具条返回首页事件最终必须调用此方法)
*
*/
- (void)bbaGoHomeWithExtraInfo:(NSDictionary * _Nullable)extraInfo;
/**
* @brief 返回主页, 不带有动画
*
*/
- (void)bbaGoHomeWithoutAnimation;
/**
* @brief 返回上一层,导航默认方法(其他自定义导航工具条返回上一级页面事件最终必须调用此方法)
*
*/
- (void)bbaGoBack;
/// 回到首页
/// @note 方法内部会判断当前是否是在首页Tab下的子VC,如果是的话,则使用系统导航默认方法回到根VC首页,
/// 如果不是在首页Tab,则判断当前VC是否是此Tab的根VC,如果是的话,则切换底Tab即可
/// 如果不是此Tab的根VC,则使用递归判断此VC是否是present的VC还是Push的VC,然后进行回退到根VC
/// @param animated 是否包含动画
- (void)bbaBackToHomePageAnimated:(BOOL)animated;
/// 回到首页, 内部逻辑同 bbaBackToHomePageAnimated:
/// @param animated 是否包含动画
/// @param extraInfo 业务信息
- (void)bbaBackToHomePageAnimated:(BOOL)animated
extraInfo:(NSDictionary * _Nullable)extraInfo;
/**
* @brief 点击菜单项,导航默认方法(其他自定义导航工具条Menu菜单事件最终必须调用此方法)
*
*/
- (void)bbaMenuAction __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
- (void)dissmissMoreMenu:(BOOL)animated __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
- (void)dismissFontPannel:(BOOL)animated __attribute__ ((deprecated("该方法已被废弃,请勿再使用,请使用 UIViewController+BBAMenu.h 中的方法")));
/**
* @brief 如果出现或将要出现在非栈底,生成完整的naviToolbarItems
*
**/
- (nullable NSArray*)bbaBuildNavigaitonToolbars:(nullable NSArray<BBAToolBarItem *> *)toolbarItems;
@end