Commit 42064c77258d34bd3d22cfb2ffc73e6606935313
1 parent
98ea20e2
no message
Showing
3 changed files
with
60 additions
and
29 deletions
CNLiveUserAgreementManager/Classes/CNLiveUserAgreementWebController.h
| ... | ... | @@ -11,6 +11,16 @@ |
| 11 | 11 | NS_ASSUME_NONNULL_BEGIN |
| 12 | 12 | |
| 13 | 13 | @interface CNLiveUserAgreementWebController : UIViewController |
| 14 | + | |
| 15 | +/** | |
| 16 | + * 对象方法 初始化方法 | |
| 17 | + * @param url url | |
| 18 | + * @param name 标题 | |
| 19 | + * 注意:默认没有关闭按钮 | |
| 20 | + */ | |
| 21 | +- (instancetype)initWithUrl:(NSString *)url name:(nullable NSString *)name; | |
| 22 | + | |
| 23 | + | |
| 14 | 24 | /** |
| 15 | 25 | * 对象方法 初始化方法 |
| 16 | 26 | * @param url url | ... | ... |
CNLiveUserAgreementManager/Classes/CNLiveUserAgreementWebController.m
| ... | ... | @@ -30,6 +30,10 @@ |
| 30 | 30 | static const NSInteger margin = 15; |
| 31 | 31 | |
| 32 | 32 | #pragma mark - 初始化方法 |
| 33 | +- (instancetype)initWithUrl:(NSString *)url name:(nullable NSString *)name{ | |
| 34 | + return [self initWithUrl:url name:name showCloseBtn:NO]; | |
| 35 | +} | |
| 36 | + | |
| 33 | 37 | - (instancetype)initWithUrl:(NSString *)url name:(nullable NSString *)name showCloseBtn:(BOOL)isShow { |
| 34 | 38 | self = [super init]; |
| 35 | 39 | if (self) { |
| ... | ... | @@ -43,27 +47,23 @@ static const NSInteger margin = 15; |
| 43 | 47 | - (void)setName:(NSString *)name{ |
| 44 | 48 | _name = name; |
| 45 | 49 | _titleLabel.text = name; |
| 46 | - | |
| 47 | 50 | } |
| 48 | 51 | |
| 49 | 52 | #pragma mark - 加载数据 |
| 50 | 53 | - (void)loadUrl { |
| 51 | 54 | NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15.0]; |
| 52 | 55 | [self.webView loadRequest:theRequest]; |
| 53 | - | |
| 54 | 56 | } |
| 55 | 57 | |
| 56 | 58 | #pragma mark - 生命周期 |
| 57 | 59 | - (void)viewWillAppear:(BOOL)animated { |
| 58 | 60 | [super viewWillAppear:animated]; |
| 59 | 61 | self.navigationController.navigationBarHidden = YES; |
| 60 | - | |
| 61 | 62 | } |
| 62 | 63 | |
| 63 | 64 | - (void)viewWillDisappear:(BOOL)animated { |
| 64 | 65 | [super viewWillDisappear:animated]; |
| 65 | 66 | self.navigationController.navigationBarHidden = NO; |
| 66 | - | |
| 67 | 67 | } |
| 68 | 68 | |
| 69 | 69 | - (void)viewDidLoad { |
| ... | ... | @@ -76,7 +76,7 @@ static const NSInteger margin = 15; |
| 76 | 76 | self.automaticallyAdjustsScrollViewInsets = NO; |
| 77 | 77 | } |
| 78 | 78 | [self setupNavigationBar]; |
| 79 | - [self setupUI]; | |
| 79 | + [self createSubViews]; | |
| 80 | 80 | [self loadUrl]; |
| 81 | 81 | |
| 82 | 82 | } |
| ... | ... | @@ -99,14 +99,14 @@ static const NSInteger margin = 15; |
| 99 | 99 | |
| 100 | 100 | #pragma mark - 创建导航条 |
| 101 | 101 | - (void)setupNavigationBar { |
| 102 | - UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height, [UIScreen mainScreen].bounds.size.width, 44)]; | |
| 102 | + UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 44+[UIApplication sharedApplication].statusBarFrame.size.height)]; | |
| 103 | 103 | navView.backgroundColor = [UIColor clearColor]; |
| 104 | 104 | [self.view bringSubviewToFront:navView]; |
| 105 | 105 | [self.view addSubview:navView]; |
| 106 | 106 | |
| 107 | 107 | UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; |
| 108 | 108 | leftBtn.adjustsImageWhenHighlighted = NO; |
| 109 | - leftBtn.frame = CGRectMake(margin, 0, 44, 44); | |
| 109 | + leftBtn.frame = CGRectMake(margin, [UIApplication sharedApplication].statusBarFrame.size.height, 44, 44); | |
| 110 | 110 | UIImage *leftImage = [self xw_getImageName:@"web_black_back" bundleName:@"CNLiveUserAgreementManager" targetClass:[CNLiveUserAgreementWebController class]]; |
| 111 | 111 | [leftBtn setImage:[leftImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; |
| 112 | 112 | [leftBtn addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; |
| ... | ... | @@ -115,7 +115,7 @@ static const NSInteger margin = 15; |
| 115 | 115 | |
| 116 | 116 | UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; |
| 117 | 117 | closeBtn.adjustsImageWhenHighlighted = NO; |
| 118 | - closeBtn.frame = CGRectMake(44+margin, 0, 44, 44); | |
| 118 | + closeBtn.frame = CGRectMake(44+margin, [UIApplication sharedApplication].statusBarFrame.size.height, 44, 44); | |
| 119 | 119 | UIImage *closeImage = [self xw_getImageName:@"web_black_close" bundleName:@"CNLiveUserAgreementManager" targetClass:[CNLiveUserAgreementWebController class]]; |
| 120 | 120 | [closeBtn setImage:[closeImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; |
| 121 | 121 | [closeBtn addTarget:self action:@selector(closeClick) forControlEvents:UIControlEventTouchUpInside]; |
| ... | ... | @@ -123,7 +123,7 @@ static const NSInteger margin = 15; |
| 123 | 123 | closeBtn.hidden = !self.isShow; |
| 124 | 124 | [navView addSubview:closeBtn]; |
| 125 | 125 | |
| 126 | - UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([[UIScreen mainScreen] bounds].size.width - 200)/2.0, 0, 200, 44)]; | |
| 126 | + UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([[UIScreen mainScreen] bounds].size.width - 200)/2.0, [UIApplication sharedApplication].statusBarFrame.size.height, 200, 44)]; | |
| 127 | 127 | titleLabel.font = [UIFont boldSystemFontOfSize:17]; |
| 128 | 128 | titleLabel.textColor = [UIColor blackColor]; |
| 129 | 129 | titleLabel.text = self.name; |
| ... | ... | @@ -133,25 +133,8 @@ static const NSInteger margin = 15; |
| 133 | 133 | |
| 134 | 134 | } |
| 135 | 135 | |
| 136 | -- (void)setupUI { | |
| 137 | - WKWebViewConfiguration * configuration = [[WKWebViewConfiguration alloc] init]; | |
| 138 | - configuration.allowsInlineMediaPlayback = YES; | |
| 139 | - WKPreferences *preferences = [WKPreferences new]; | |
| 140 | - preferences.javaScriptCanOpenWindowsAutomatically = YES; | |
| 141 | - configuration.preferences = preferences; | |
| 142 | - self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height+44, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height-([UIApplication sharedApplication].statusBarFrame.size.height+44)) configuration:configuration]; | |
| 143 | - _webView.UIDelegate = self; | |
| 144 | - _webView.navigationDelegate = self; | |
| 145 | - _webView.contentMode = UIViewContentModeScaleAspectFit; | |
| 146 | - _webView.scrollView.showsHorizontalScrollIndicator = NO; | |
| 147 | - _webView.scrollView.showsVerticalScrollIndicator = NO; | |
| 148 | - _webView.allowsBackForwardNavigationGestures = YES; | |
| 149 | - _webView.allowsLinkPreview = NO; | |
| 136 | +- (void)createSubViews { | |
| 150 | 137 | [self.view addSubview:self.webView]; |
| 151 | - | |
| 152 | - self.processView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, ([UIApplication sharedApplication].statusBarFrame.size.height+44)+0.5, [[UIScreen mainScreen] bounds].size.width, 1)]; | |
| 153 | - _processView.progressTintColor = [UIColor colorWithRed:19/255.0 green:204/255.0 blue:12/255.0 alpha:1.0]; | |
| 154 | - _processView.trackTintColor = [UIColor whiteColor]; | |
| 155 | 138 | [self.view addSubview:self.processView]; |
| 156 | 139 | |
| 157 | 140 | [self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil]; |
| ... | ... | @@ -268,6 +251,35 @@ static const NSInteger margin = 15; |
| 268 | 251 | } |
| 269 | 252 | } |
| 270 | 253 | #pragma mark - 懒加载 |
| 254 | +- (WKWebView *)webView{ | |
| 255 | + if(!_webView){ | |
| 256 | + WKWebViewConfiguration * configuration = [[WKWebViewConfiguration alloc] init]; | |
| 257 | + configuration.allowsInlineMediaPlayback = YES; | |
| 258 | + WKPreferences *preferences = [WKPreferences new]; | |
| 259 | + preferences.javaScriptCanOpenWindowsAutomatically = YES; | |
| 260 | + configuration.preferences = preferences; | |
| 261 | + _webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height+44, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height-([UIApplication sharedApplication].statusBarFrame.size.height+44)) configuration:configuration]; | |
| 262 | + _webView.UIDelegate = self; | |
| 263 | + _webView.navigationDelegate = self; | |
| 264 | + _webView.contentMode = UIViewContentModeScaleAspectFit; | |
| 265 | + _webView.scrollView.showsHorizontalScrollIndicator = NO; | |
| 266 | + _webView.scrollView.showsVerticalScrollIndicator = NO; | |
| 267 | + _webView.allowsBackForwardNavigationGestures = YES; | |
| 268 | + _webView.allowsLinkPreview = NO; | |
| 269 | + | |
| 270 | + } | |
| 271 | + return _webView; | |
| 272 | +} | |
| 273 | + | |
| 274 | +- (UIProgressView *)processView{ | |
| 275 | + if(!_processView){ | |
| 276 | + _processView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, ([UIApplication sharedApplication].statusBarFrame.size.height+44)+0.5, [[UIScreen mainScreen] bounds].size.width, 1)]; | |
| 277 | + _processView.progressTintColor = [UIColor colorWithRed:19/255.0 green:204/255.0 blue:12/255.0 alpha:1.0]; | |
| 278 | + _processView.trackTintColor = [UIColor whiteColor]; | |
| 279 | + } | |
| 280 | + return _processView; | |
| 281 | +} | |
| 282 | + | |
| 271 | 283 | #pragma mark - 私有方法 |
| 272 | 284 | // 清除缓存 |
| 273 | 285 | - (void)clearWKCache { | ... | ... |
Example/CNLiveUserAgreementManager/CNLiveViewController.m
| ... | ... | @@ -7,9 +7,11 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import "CNLiveViewController.h" |
| 10 | -#import "CNLiveUserAgreementManager.h" | |
| 11 | 10 | #import "CNLiveEnvironment.h" |
| 12 | 11 | |
| 12 | +#import "CNLiveUserAgreementManager.h" | |
| 13 | +#import "CNLiveUserAgreementWebController.h" | |
| 14 | + | |
| 13 | 15 | @interface CNLiveViewController () |
| 14 | 16 | |
| 15 | 17 | @end |
| ... | ... | @@ -33,8 +35,15 @@ |
| 33 | 35 | |
| 34 | 36 | } |
| 35 | 37 | - (void)testButtonClicked { |
| 36 | - [CNLiveUserAgreementManager jumpToAgreementH5WithType:CNLiveUserAgreementCancellation]; | |
| 38 | +// [CNLiveUserAgreementManager jumpToAgreementH5WithType:CNLiveUserAgreementCancellation]; | |
| 37 | 39 | // [CNLiveUserAgreementManager jumpToAgreementH5WithString:@"yhxy"]; |
| 40 | + [CNLiveUserAgreementManager getAgreementH5WithType:CNLiveUserAgreementCancellation success:^(NSString * _Nonnull h5, NSString * _Nonnull title, BOOL isShow) { | |
| 41 | + CNLiveUserAgreementWebController *vc = [[CNLiveUserAgreementWebController alloc] initWithUrl:h5 name:title showCloseBtn:NO]; | |
| 42 | + [self.navigationController pushViewController:vc animated:YES]; | |
| 43 | + | |
| 44 | + } failure:^(NSError * _Nonnull error) { | |
| 45 | + | |
| 46 | + }]; | |
| 38 | 47 | |
| 39 | 48 | } |
| 40 | 49 | ... | ... |