BBADialog.h
9.06 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
//
// BBADialog.h
// BBAPods-BBAUIKit
//
// Created by hulinling on 2017/11/15.
// Copyright © 2017年 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BBADialogItem.h"
#import "BBADialogConfigItem.h"
#import "BBADialogGlobalConfig.h"
/// 弹窗hide时所发送的通知 (该通知同时,会将当前的弹窗对象通过notification.object传出)
extern NSString * const BBADialogNotificationDidHided;
@interface BBADialog : NSObject
@property (nonatomic, readonly, strong) UIWindow *window;
#pragma mark - 主题环绕方法
/// 若要在指定主题里展示,则在调用dialog展示的相关方法需放到该方法中的task block中执行;反之,dialog跟随当前APP的主题
/// @param mode 指定主题
/// @param task 待执行的任务
+ (void)runInTheme:(NSString *)mode withTask:(void(^)(void))task;
/// 设置弹窗全局配置信息,同时返回旧的全局配置信息
/// @param globalConfig 新的弹窗全局配置信息
+ (BBADialogGlobalConfig *)setGlobalConfig:(BBADialogGlobalConfig *)globalConfig;
#pragma mark - 便捷方法
#pragma mark -- 运营类弹窗 (该样式的弹窗,不支持横屏)
/// 展示图片运营类弹窗 (该形式的弹窗,视觉对大小有明确限制,因此该样式的弹窗所展示的图片区域的size是固定的)
/// @param image 待展示的图片
/// @param closeStyle 关闭按钮的风格
/// @param closeBlock 关闭按钮点击回调
+ (instancetype)showWithTipImage:(UIImage *)image
closeStyle:(BBADialogCloseStyle)closeStyle
closeBlock:(void(^)(void))closeBlock;
/// 展示图片运营类弹窗 (该形式的弹窗,视觉对大小有明确限制,因此该样式的弹窗所展示的图片区域的size是固定的)
/// @param image 待展示的图片
/// @param clickBlock 图片点击的响应处理(若指定了该参数,在点击图片区域之后,弹窗会根据该block的返回值来决定是否自动隐藏)
/// @param closeStyle 关闭按钮的风格
/// @param closeBlock 关闭按钮点击回调
+ (instancetype)showWithTipImage:(UIImage *)image
imageClickBlock:(BOOL(^)(void))clickBlock
closeStyle:(BBADialogCloseStyle)closeStyle
closeBlock:(void(^)(void))closeBlock;
/// 展示自定义视图类运营类弹窗 (该形式的弹窗,内容区域的大小完全由tipCustomView决定)
/// @param tipCustomView 自定义样式的视图
/// @param closeStyle 关闭按钮的风格
/// @param closeBlock 关闭按钮点击回调
+ (instancetype)showWithTipCustomView:(UIView *)tipCustomView
closeStyle:(BBADialogCloseStyle)closeStyle
closeBlock:(void(^)(void))closeBlock;
/// 展示图片运营类弹窗 (该形式的弹窗,视觉对大小有明确限制,因此该样式的弹窗所展示的图片区域的size是固定的)
/// @param image 待展示的图片 (展示图片区域的size是固定的,以6P为准,其size为:331 * 390)
/// @param showClose 是否展示底部关闭按钮
/// @param closeBlock 关闭按钮点击回调
+ (instancetype)showWithTipImage:(UIImage *)image
showClose:(BOOL)showClose
closeBlock:(void(^)(void))closeBlock __deprecated_msg("请使用showWithTipImage:closeButtonStyle:closeBlock代替");
/// 展示图片运营类弹窗 (该形式的弹窗,视觉对大小有明确限制,因此该样式的弹窗所展示的图片区域的size是固定的)
/// @param image 待展示的图片
/// @param clickBlock 图片点击的响应处理(若指定了该参数,在点击图片区域之后,弹窗会根据该block的返回值来决定是否自动隐藏)
/// @param showClose 是否展示底部关闭按钮
/// @param closeBlock 关闭按钮点击回调
+ (instancetype)showWithTipImage:(UIImage *)image
imageClickBlock:(BOOL(^)(void))clickBlock
showClose:(BOOL)showClose
closeBlock:(void(^)(void))closeBlock __deprecated_msg("请使用showWithTipImage:imageClickBlock:closeStyle:closeBlock代替");
/// 展示自定义视图类运营类弹窗 (该形式的弹窗,内容区域的大小完全由tipCustomView决定)
/// @param tipCustomView 自定义样式的视图
/// @param showClose 是否展示底部关闭按钮
/// @param closeBlock 关闭按钮点击回调
+ (instancetype)showWithTipCustomView:(UIView *)tipCustomView
showClose:(BOOL)showClose
closeBlock:(void(^)(void))closeBlock __deprecated_msg("请使用showWithTipCustomView:imageClickBlock:closeStyle:closeBlock代替");
#pragma mark -- Alert形式弹窗 (该样式的弹窗,支持横屏)
/// 展示Alert形式弹窗
/// @param title 标题 (若不设置,则不展示标题区域)
/// @param contentInfo 内容 (若不设置,则不展示内容区域)
/// @param buttonItems 操作按钮 (若不设置,则不展示按钮区域)
///
/// @note
/// 1,若需要自定义标题或内容文案的颜色,可使用如下方法:
/// @code showWithTitle:titleColor:contentInfo:contentColor:buttonItems:
/// @endcode
/// 2,Alert形式弹窗,支持内容区域可自定义,若需要自定义视图,可使用通用方法:
/// @code showWithItems:
/// @endcode
+ (instancetype)showWithTitle:(NSString *)title
contentInfo:(NSString *)contentInfo
buttonItems:(NSArray<BBADialogButtonItem *> *)buttonItems;
/// 展示alert类弹窗
/// @param title 标题
/// @param titleColor 标题文本色号 (!!! 该属性应该传递具体色值的色号,若直接传递色值(色值支持alpha,最后2位代表alpha,即:RRGGBBAA),则不会随主题切换色值 !!!)
/// @param contentInfo 内容
/// @param contentColor 内容文本色号 (!!! 该属性应该传递具体色值的色号,若直接传递色值(色值支持alpha,最后2位代表alpha,即:RRGGBBAA),则不会随主题切换色值 !!!)
/// @param buttonItems 按钮
+ (instancetype)showWithTitle:(NSString *)title
titleColor:(NSString *)titleColor
contentInfo:(NSString *)contentInfo
contentColor:(NSString *)contentColor
buttonItems:(NSArray<BBADialogButtonItem *> *)buttonItems;
#pragma mark - 通用方法
/// 展示弹窗的通用方法
/// @param items 弹窗的样式,将以指定的items进行布局
/// @note
/// 1, 若需要以运营类弹窗样式展示,则items里须只包含一个item,即:BBADialogTipItem
/// 2, 若需要以Alert样式展示,则根据需要,配置标题、内容、按钮区域,对应的item为:BBADialogTitleItem、BBADialogContentItem、BBADialogButtonItem
+ (instancetype)showWithItems:(NSArray<BBADialogItem *> *)items;
/// 展示弹窗的通用方法(可配置展示动画、横竖屏配置)
/// @param items 弹窗的样式,将以指定的items进行布局 (当items里的只包含一个item,且为 BBADialogTipItem 时,则按提示样式展示(该方式不支持横屏);反之,按alert样式展示,且忽略items中的BBADialogTipItem)
/// @param configItem 用于指定横竖屏配置(通常情况,不需要设置该值,弹窗组件有自己的横竖屏逻辑:只有Alert样式的支持横屏)
/// @param showAnimationType 用于指定展示动画(当为BBADialogShowAnimationType_Default时,走弹窗组件自身规定的效果)
+ (instancetype)showWithItems:(NSArray<BBADialogItem *> *)items
configItem:(BBADialogConfigItem *)configItem
showAnimationType:(BBADialogShowAnimationType)showAnimationType;
/// 是否有弹框展示
+ (BOOL)isShow;
/// 手动隐藏对话框
- (void)hide;
/// 手动隐藏对话框
/// @param animated 是否带动画
- (void)hide:(BOOL)animated;
/// 手动再次显示之前hide的对话框
/// @param showAnimationType 展示动画类型
- (void)show:(BBADialogShowAnimationType)showAnimationType;
/// 更新指定按钮信息
/// @param specifyButtonItem 指定待更新的按钮item(该item必须是用于初始化弹窗所用BBADialogButtonItem才生效)
- (void)updateButtonItem:(BBADialogButtonItem *)specifyButtonItem;
@end
@interface BBADialog (Assist)
/// 对话框宽度
+ (CGFloat)DialogWidth;
/// Alert形式的对话框的内容区域最大宽度
+ (CGFloat)DialogAlertContentMaxWidth;
/// Alert形式的对话框的内容可视区域的最大高度(超过这个高度,内容会被加载scrollView上)
/// @param useCustomContent 是否使用自定内容视图
/// @param ignore 是否忽略默认的内容边距
+ (CGFloat)DialogAlertContentMaxHeightUseCustomContent:(BOOL)useCustomContent
ignoreDefaultPadding:(BOOL)ignore;
/// Alert形式的对话框的按钮的蓝色字颜色
+ (NSString *)DialogButtonBlueColor;
/// Alert形式的对话框的按钮的红色字颜色
+ (NSString *)DialogButtonRedColor;
/// 弹窗屏幕适配的缩放方法(对于自定义的视图,可使用该方法进行缩放处理)
+ (CGFloat)DialogScaledSize:(CGFloat)size;
/// 弹窗屏幕适配的缩放比例因子
+ (CGFloat)DialogScaleFlag;
@end