developer
2023-05-20 e12c7b4c22df631ebdcd16b2f98fbef8f738f92f
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
/*
 * WVWebViewControllerProtocol.h
 *
 * Created by WindVane.
 * Copyright (c) 2017年 阿里巴巴-淘宝技术部. All rights reserved.
 */
 
#import "WVViewControllerProtocol.h"
#import "WVWebViewControllerUIProtocol.h"
#import "WVWebViewToolbar.h"
#import <Foundation/Foundation.h>
 
/**
 * 表示基本的 WindVane WebView ViewController 协议,包含 ViewController 额外提供的功能。
 */
@protocol WVWebViewControllerProtocol <WVViewControllerProtocol, WVWebViewControllerUIProtocol>
 
#pragma mark - WebView
 
/**
 * 需要在 viewDidLoad 时自动加载的页面请求,会与 loadUrl 同步变化。
 */
@property (nonatomic, copy, nullable) NSURLRequest * loadRequest;
 
/**
 * 需要在 viewDidLoad 时自动加载的页面地址,会与 loadRequest 同步变化。
 */
@property (nonatomic, copy, nullable) NSString * loadUrl;
 
/**
 * 自定义导航栏高度 - 用于计算 WebView 高度。
 */
@property (nonatomic, assign) CGFloat navBarHeight;
 
/**
 * 自定义 TabBar 高度 - 用于计算 WebView 高度。
 */
@property (nonatomic, assign) CGFloat tabBarHeight;
 
#pragma mark - Status Bar
 
/**
 隐藏导航栏时,Status Bar 背景的颜色,默认为 nil。
 
 @discussion iOS 7 的 Status Bar 在导航栏隐藏的时候会背景透明,与 WebView 中的内容遮盖。
 如果希望为 Status Bar 添加一个不透明背景,可以设置此属性为需要的颜色。
 自 iOS11 后,iPhoneX 的机型状态栏高度变为 44pt,不再适合自动设置状态栏高度,应当由前端主动填充合适的背景,让状态栏与背景融合起来。
 */
@property (nonatomic, strong, nullable) UIColor * statusBarColor NS_DEPRECATED_IOS(7_0, 10_0);
 
/**
 [iOS 7 适配] 隐藏导航栏时,为 Status Bar 添加白色背景颜色。
 
 @discussion 自 iOS11 后,iPhoneX 的机型状态栏高度变为 44pt,不再适合自动设置状态栏高度,应当由前端主动填充合适的背景,让状态栏与背景融合起来。
 */
- (void)supportiOS7WithoutStatusBar NS_DEPRECATED_IOS(7_0, 10_0);
 
#pragma mark - Toolbar
 
/**
 * 是否使用带有前进、后退、刷新、停止基本浏览器功能的默认工具栏,默认为 NO。
 */
@property (nonatomic, assign, getter=isUseToolbar) BOOL useToolbar;
 
/**
 * 工具栏。
 */
@property (nonatomic, strong, readonly, nullable) WVWebViewToolbar * toolbar;
 
/**
 * 工具栏的高度,默认为 40px。
 */
@property (nonatomic, assign) CGFloat toolbarHeight;
 
/**
 * 是否动态显示工具栏。
 */
@property (nonatomic, assign) BOOL showToolBarDynamic;
 
/**
 * 是否仅在发生错误的时候,才使用工具栏,无错误发生的时候,一直隐藏起来。
 * 仅在 useToolbar=YES 时候生效。
 */
@property (nonatomic, assign, getter=isUseToolbarOnlyError) BOOL useToolbarOnlyError;
 
/**
 * 隐藏默认的工具栏。
 */
- (void)hiddenToolBar;
 
/**
 * 显示默认的工具栏。
 */
- (void)showToolBar;
 
/**
 * 如果需要提供自己的工具栏,请设置 useToolbar=NO,然后自行提供工具栏,并设置以下的属性。
 * 会自动根据当前 WebView 状态,设置按钮的 enabled。
 */
/**
 * 自定义的回退按钮。
 */
@property (nonatomic, weak, nullable) id customToolBarGoBackButton;
 
/**
 * 自定义的前进按钮。
 */
@property (nonatomic, weak, nullable) id customToolBarGoForwardButton;
 
/**
 * 自定义的停止按钮。
 */
@property (nonatomic, weak, nullable) id customToolBarStopLoadingButton;
 
/**
 * 自定义的刷新按钮。
 */
@property (nonatomic, weak, nullable) id customToolBarRefreshButton;
 
#pragma mark - 定制加载框
 
/**
 * 是否显示加载框,默认为 YES。
 * 可以设置为 NO 不显示加载框,此时可以使用 KVO 监听 WebView.estimatedProgress 的改变,实现加载进度。
 */
@property (nonatomic, assign, getter=isShowLoadingBox) BOOL showLoadingBox;
 
/**
 * 使用指定的标题显示加载框。
 * 允许由子类重写以自定义加载框。
 */
- (void)showLoadingBoxWithTitle:(NSString * _Nullable)title;
 
#pragma mark - 设备旋转
 
/**
 * 支持的设备旋转方向。
 * 设置为 0 会使用系统默认的设备旋转方向,客户端可能需要自行重写设置方法,才能实现完整的转屏适配。
 */
@property (nonatomic, assign) UIInterfaceOrientationMask interfaceOrientationMask;
 
/**
 * 首选的设备旋转方向。
 */
@property (nonatomic, assign) UIInterfaceOrientation preferredInterfaceOrientation;
 
@end