Commit 8eafe4a51390dea2b2147457db79acc3c4c2f296
1 parent
dbe52eb3
封装cnWebView
Showing
7 changed files
with
264 additions
and
110 deletions
metaCode.xcodeproj/project.pbxproj
| ... | ... | @@ -92,6 +92,7 @@ |
| 92 | 92 | 1938BD432B4E34B200390A34 /* CNHomepageDuanJuDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1938BD422B4E34B200390A34 /* CNHomepageDuanJuDetailViewController.swift */; }; |
| 93 | 93 | 1938BD452B4E49CA00390A34 /* CNLiveDuanjuTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1938BD442B4E49CA00390A34 /* CNLiveDuanjuTitleCell.swift */; }; |
| 94 | 94 | 1938BD472B4FD5A500390A34 /* CNLiveIntegralAlertTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1938BD462B4FD5A500390A34 /* CNLiveIntegralAlertTool.swift */; }; |
| 95 | + 194455A12B6B3310006C5A2A /* CNWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194455A02B6B3310006C5A2A /* CNWebView.swift */; }; | |
| 95 | 96 | 19565EC02AF4DE0E007D6727 /* CNLiveShopDetailBtnsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19565EBF2AF4DE0E007D6727 /* CNLiveShopDetailBtnsCell.swift */; }; |
| 96 | 97 | 19565EC22AF616CA007D6727 /* CNLiveShopDetailOrderAssetCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19565EC12AF616CA007D6727 /* CNLiveShopDetailOrderAssetCell.swift */; }; |
| 97 | 98 | 19565EC52AF8AD1F007D6727 /* CNLiveShopProductManagerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19565EC42AF8AD1F007D6727 /* CNLiveShopProductManagerController.swift */; }; |
| ... | ... | @@ -354,6 +355,7 @@ |
| 354 | 355 | 1938BD422B4E34B200390A34 /* CNHomepageDuanJuDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNHomepageDuanJuDetailViewController.swift; sourceTree = "<group>"; }; |
| 355 | 356 | 1938BD442B4E49CA00390A34 /* CNLiveDuanjuTitleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDuanjuTitleCell.swift; sourceTree = "<group>"; }; |
| 356 | 357 | 1938BD462B4FD5A500390A34 /* CNLiveIntegralAlertTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveIntegralAlertTool.swift; sourceTree = "<group>"; }; |
| 358 | + 194455A02B6B3310006C5A2A /* CNWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNWebView.swift; sourceTree = "<group>"; }; | |
| 357 | 359 | 19565EBF2AF4DE0E007D6727 /* CNLiveShopDetailBtnsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopDetailBtnsCell.swift; sourceTree = "<group>"; }; |
| 358 | 360 | 19565EC12AF616CA007D6727 /* CNLiveShopDetailOrderAssetCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopDetailOrderAssetCell.swift; sourceTree = "<group>"; }; |
| 359 | 361 | 19565EC42AF8AD1F007D6727 /* CNLiveShopProductManagerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopProductManagerController.swift; sourceTree = "<group>"; }; |
| ... | ... | @@ -736,6 +738,7 @@ |
| 736 | 738 | isa = PBXGroup; |
| 737 | 739 | children = ( |
| 738 | 740 | 19123FC02ABC11170075C883 /* CNWebViewController.swift */, |
| 741 | + 194455A02B6B3310006C5A2A /* CNWebView.swift */, | |
| 739 | 742 | ); |
| 740 | 743 | path = WebController; |
| 741 | 744 | sourceTree = "<group>"; |
| ... | ... | @@ -1805,6 +1808,7 @@ |
| 1805 | 1808 | 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */, |
| 1806 | 1809 | 79282A442A2F1C1E00B5F8CF /* CNLiveLoginAuthView.swift in Sources */, |
| 1807 | 1810 | 79BB96A62AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift in Sources */, |
| 1811 | + 194455A12B6B3310006C5A2A /* CNWebView.swift in Sources */, | |
| 1808 | 1812 | 1938BD2C2B4801A700390A34 /* CNHomePageAnimationTransition.swift in Sources */, |
| 1809 | 1813 | 191733452B284DCD007BCC04 /* CNLiveShopCouponListModel.swift in Sources */, |
| 1810 | 1814 | 7C2703302A36CBE30061EC50 /* CNCertificationView.swift in Sources */, | ... | ... |
metaCode/Classes/Main/HomePage/Controller/AuthMainController/CNMetaCodeHomePageController.swift
| ... | ... | @@ -310,7 +310,7 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel |
| 310 | 310 | self.getApplyShopInfo() |
| 311 | 311 | print("DSShopDarenAuthResultNotificationAction") |
| 312 | 312 | } |
| 313 | - //刷新当前垂直是哪个页面 | |
| 313 | + // MARK: - 刷新当前垂直是哪个页面 | |
| 314 | 314 | @objc func kAuthVNumPageChangedNotificationAction(noti:Notification){ |
| 315 | 315 | let dict = (noti.userInfo ?? ["":""]) as! [String :Any] |
| 316 | 316 | let num = dict["AuthVNumPage"] as! Int |
| ... | ... | @@ -431,8 +431,6 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel |
| 431 | 431 | bannerView?.superScrollView = flowView.scrollView |
| 432 | 432 | bannerView?.associatedVCView = self.view |
| 433 | 433 | bannerView?.delegate = self |
| 434 | - bannerView?.upSlideView.webView.navigationDelegate = self | |
| 435 | - bannerView?.downSlideView.webView.navigationDelegate = self | |
| 436 | 434 | return bannerView |
| 437 | 435 | } |
| 438 | 436 | |
| ... | ... | @@ -577,64 +575,7 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel |
| 577 | 575 | } |
| 578 | 576 | } |
| 579 | 577 | } |
| 580 | - | |
| 581 | - // MARK: - WKWebViewDelegate | |
| 582 | - // 页面开始加载时调用 | |
| 583 | - func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { | |
| 584 | - print("didStartProvisionalNavigation") | |
| 585 | - } | |
| 586 | - // 当内容开始返回时调用 | |
| 587 | - func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) { | |
| 588 | - print("didCommit") | |
| 589 | - } | |
| 590 | - // 页面加载完成之后调用 | |
| 591 | - func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { | |
| 592 | - print("didFinish") | |
| 593 | - } | |
| 594 | - // 页面加载失败时调用 | |
| 595 | - func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { | |
| 596 | - print("didFailProvisionalNavigation") | |
| 597 | - } | |
| 598 | - // 接收到服务器跳转请求之后调用 | |
| 599 | - func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) { | |
| 600 | - print("didReceiveServerRedirectForProvisionalNavigation") | |
| 601 | - } | |
| 602 | - // 在收到响应后,决定是否跳转 -> 默认允许 | |
| 603 | - func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { | |
| 604 | - print("decidePolicyFor") | |
| 605 | - //允许跳转 | |
| 606 | - decisionHandler(.allow) | |
| 607 | - //不允许跳转 | |
| 608 | -// decisionHandler(.cancel) | |
| 609 | - } | |
| 610 | - // 在发送请求之前,决定是否跳转 -> 默认允许 | |
| 611 | - @available(iOS 13.0, *) | |
| 612 | - func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) { | |
| 613 | - print("decidePolicyFor") | |
| 614 | - let url:String = navigationAction.request.url!.absoluteString | |
| 615 | - print("navigationAction:\(navigationAction.navigationType.rawValue)") | |
| 616 | - print(url) | |
| 617 | - if(navigationAction.navigationType == .linkActivated){ | |
| 618 | - let webVC = CNWebViewController() | |
| 619 | - webVC.url = URL(string: url) | |
| 620 | - navigationViewController().pushViewController(webVC, animated: pushAnimated) | |
| 621 | -// currentViewController()?.navigationController?.pushViewController(webVC, animated: pushAnimated) | |
| 622 | - decisionHandler(.cancel, preferences) | |
| 623 | - return | |
| 624 | - }else if(navigationAction.navigationType == .other){ | |
| 625 | - if(url.contains("wjjh5.cnlive.com")){ | |
| 626 | - | |
| 627 | - decisionHandler(.allow, preferences) | |
| 628 | - return | |
| 629 | - }else | |
| 630 | - { | |
| 631 | - decisionHandler(.cancel, preferences) | |
| 632 | - return | |
| 633 | - } | |
| 634 | - } | |
| 635 | - decisionHandler(.allow, preferences) | |
| 636 | - } | |
| 637 | - | |
| 578 | + | |
| 638 | 579 | //MARK: - 网络请求获取身份列表 |
| 639 | 580 | func getUserIdentityApi() |
| 640 | 581 | { | ... | ... |
metaCode/Classes/Main/HomePage/Controller/WebController/CNWebView.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNWebView.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by zx on 2024/2/1. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import WebKit | |
| 10 | +import WebViewJavascriptBridge | |
| 11 | +import CNLiveShareToolKit | |
| 12 | +import CommonCrypto | |
| 13 | +import CNLiveBusinessTools | |
| 14 | + | |
| 15 | +class CNWebView:UIView,WKNavigationDelegate{ | |
| 16 | + | |
| 17 | + var configuration:WKWebViewConfiguration? | |
| 18 | + | |
| 19 | + lazy var cnWebView :WKWebView = { | |
| 20 | + let cnWebView = WKWebView(frame: self.bounds, configuration: self.configuration!) | |
| 21 | + return cnWebView | |
| 22 | + }() | |
| 23 | + | |
| 24 | + | |
| 25 | + var webUrl:URL?//初始URL | |
| 26 | + var currentUrl:String = ""//当前网页的url | |
| 27 | + var bridge:WKWebViewJavascriptBridge? | |
| 28 | + | |
| 29 | + init(frame: CGRect, configuration: WKWebViewConfiguration ,url:URL?) { | |
| 30 | + super.init(frame: frame) | |
| 31 | + self.configuration = configuration | |
| 32 | + self.addSubview(self.cnWebView) | |
| 33 | + self.webUrl = url | |
| 34 | + self.cnWebView.evaluateJavaScript("navigator.userAgent") { [self] result, error in | |
| 35 | + let userAgent = result as! String | |
| 36 | + if error == nil && userAgent.count > 0 { | |
| 37 | + if !userAgent.contains(CNLiveMCEnvironmentManager.shared.base_web_UA) { | |
| 38 | + let newUserAgent = userAgent + CNLiveMCEnvironmentManager.shared.base_web_UA | |
| 39 | + self.cnWebView.customUserAgent = newUserAgent | |
| 40 | + | |
| 41 | + if (self.webUrl != nil){ | |
| 42 | + let urlStr = self.checkURLWithStr(urlStr: self.webUrl!.absoluteString) | |
| 43 | + self.currentUrl = urlStr | |
| 44 | + | |
| 45 | + self.cnWebView.load(URLRequest.init(url:URL(string: urlStr)!)) | |
| 46 | + } | |
| 47 | + self.configBridge() | |
| 48 | + self.configBridgeRegister() | |
| 49 | + } | |
| 50 | + } | |
| 51 | + } | |
| 52 | + } | |
| 53 | + | |
| 54 | + func configBridge(){ | |
| 55 | + WKWebViewJavascriptBridge.enableLogging() | |
| 56 | + self.bridge = WKWebViewJavascriptBridge(for: self.cnWebView) | |
| 57 | + self.bridge?.setWebViewDelegate(self) | |
| 58 | + } | |
| 59 | + //h5拉起原生分享 js call oc | |
| 60 | + func configBridgeRegister() -> Void { | |
| 61 | + self.bridge?.registerHandler("wjjylzgVideoShare", handler: { data, responseCallback in | |
| 62 | +// print("js call oc\(data)") | |
| 63 | + let dic = data as! Dictionary<String, String> | |
| 64 | + CNLiveShareManager.showShareViewWithParam(forShareTitle: dic["title"], shareUrl: dic["shareUrl"], shareDesc: dic["subTitle"], shareImage: dic["cover"], screenFull: false, hiddenWjj: true, hiddenQQ: false, hiddenWB: true, hiddenLifeCircle: true, hiddenWechatCircle: false, hiddenWechat: false, hiddenSafari: true, formVC: currentViewController(), topImage: [], topTitles: [], platformType: .all) { title in | |
| 65 | + | |
| 66 | + } completerBlock: { resultType, platformType, typeString in | |
| 67 | + if resultType == .succ{ | |
| 68 | + | |
| 69 | + } | |
| 70 | + } | |
| 71 | + | |
| 72 | + }) | |
| 73 | + } | |
| 74 | + | |
| 75 | + required init?(coder: NSCoder) { | |
| 76 | + fatalError("init(coder:) has not been implemented") | |
| 77 | + } | |
| 78 | + | |
| 79 | + func checkURLWithStr(urlStr:String) -> String{ | |
| 80 | + if URL(string: urlStr)?.host != WjjH5 { | |
| 81 | + return urlStr//不是wjjh5不作处理 | |
| 82 | + } | |
| 83 | + var str = urlStr | |
| 84 | + let date = Date() | |
| 85 | + let formatter = DateFormatter() | |
| 86 | + formatter.dateFormat = "yyyyMMdd" | |
| 87 | + let dateStr = formatter.string(from: date) | |
| 88 | + let sidStr = String(format: "%@%@", UserInfoManager.shared.userInfo.uid,dateStr) | |
| 89 | + let signStr = sidStr.crypt(operation: CCOperation(kCCEncrypt), key: CNLiveMCEnvironmentManager.shared.appKey) | |
| 90 | + //看是 appKey还是appKeywjj | |
| 91 | + let sidSignStr = (signStr ?? "").isEmpty ? "" : signStr | |
| 92 | + let sourceArray = str.components(separatedBy: "?") | |
| 93 | + let buildVersion = Bundle.main.infoDictionary!["CFBundleVersion"] as! String | |
| 94 | + let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String | |
| 95 | + let uuid = CNLiveBusinessTools.getUidForStat(Date()) | |
| 96 | + if sourceArray.count == 1{ | |
| 97 | + //是wjjh5且无参数 | |
| 98 | + str = String(format: "%@?shareSid=%@&sid=%@&plat=i&ver=%@&version=%@&wjjFrom=apple&wjjUUID=%@&appId=%@&voteId=%@&wjjToken=%@", str,UserInfoManager.shared.userInfo.uid,UserInfoManager.shared.userInfo.uid,buildVersion,appVersion,uuid,CNLiveMCEnvironmentManager.shared.appId,sidSignStr!,UserInfoManager.shared.userInfo.token) | |
| 99 | + return str | |
| 100 | + } | |
| 101 | + //是wjjh5且有参数 | |
| 102 | + let paraArr = NSMutableArray(array: ["shareSid=","sid=","plat=","ver=","version=","wjjFrom=","wjjUUID=","appId=","voteId=","wjjToken="]) | |
| 103 | + let valueArr = NSMutableArray(array:[UserInfoManager.shared.userInfo.uid,UserInfoManager.shared.userInfo.uid,"i",buildVersion,appVersion,"apple",uuid,CNLiveMCEnvironmentManager.shared.appId,sidSignStr!,UserInfoManager.shared.userInfo.token]) | |
| 104 | + var i = 0 | |
| 105 | + for paraStr in paraArr{ | |
| 106 | + let tempStr = paraStr as! String | |
| 107 | + let paramStr = "&".appending(tempStr) | |
| 108 | + let paramStr2 = "?".appending(tempStr) | |
| 109 | + | |
| 110 | + if str.contains(paramStr){ | |
| 111 | + //包含则替换 &sid= | |
| 112 | + let lastStr = str.components(separatedBy: tempStr).last | |
| 113 | + let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)! | |
| 114 | + let oldStr = tempStr.appending(lastSeparatedStr) | |
| 115 | + let tempValueStr = tempStr.appending(valueArr[i] as! String) | |
| 116 | + str = str.replacingOccurrences(of: oldStr, with: tempValueStr) | |
| 117 | + }else if str.contains(paramStr2){ | |
| 118 | + //包含则替换 &sid= | |
| 119 | + let lastStr = str.components(separatedBy: tempStr).last | |
| 120 | + let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)! | |
| 121 | + let oldStr = tempStr.appending(lastSeparatedStr) | |
| 122 | + let tempValueStr = tempStr.appending(valueArr[i] as! String) | |
| 123 | + str = str.replacingOccurrences(of: oldStr, with: tempValueStr) | |
| 124 | + }else{ | |
| 125 | + //不包含则拼接 | |
| 126 | + str = String(format: "%@&%@%@", str,tempStr,valueArr[i] as! String) | |
| 127 | + } | |
| 128 | + i = i + 1 | |
| 129 | + } | |
| 130 | + return str | |
| 131 | + } | |
| 132 | + | |
| 133 | + // MARK: - WKWebViewDelegate | |
| 134 | + // 页面开始加载时调用 | |
| 135 | + func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { | |
| 136 | + print("didStartProvisionalNavigation") | |
| 137 | + } | |
| 138 | + // 当内容开始返回时调用 | |
| 139 | + func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) { | |
| 140 | + print("didCommit") | |
| 141 | + } | |
| 142 | + | |
| 143 | + // 页面加载完成之后调用 | |
| 144 | + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { | |
| 145 | + print("didFinish") | |
| 146 | +// titleName = webView.title! | |
| 147 | + } | |
| 148 | + // 页面加载失败时调用 | |
| 149 | + func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { | |
| 150 | + print("didFailProvisionalNavigation") | |
| 151 | + } | |
| 152 | + // 接收到服务器跳转请求之后调用 | |
| 153 | + func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) { | |
| 154 | + print("didReceiveServerRedirectForProvisionalNavigation") | |
| 155 | + } | |
| 156 | + // 在收到响应后,决定是否跳转 -> 默认允许 | |
| 157 | + func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { | |
| 158 | + | |
| 159 | + print("decidePolicyFornavigationResponse") | |
| 160 | + | |
| 161 | + //允许跳转 | |
| 162 | + decisionHandler(.allow) | |
| 163 | + //不允许跳转 | |
| 164 | + // decisionHandler(.cancel) | |
| 165 | + } | |
| 166 | + // 在发送请求之前,决定是否跳转 -> 默认允许 | |
| 167 | + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { | |
| 168 | + print("decidePolicyFornavigationAction") | |
| 169 | + | |
| 170 | + var urlStr = (navigationAction.request.url?.absoluteString)! | |
| 171 | + | |
| 172 | + if navigationAction.request.url?.host == WjjH5 { | |
| 173 | + | |
| 174 | +// if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){ | |
| 175 | +// self.rightNavBtns = [self.moreNavBtn] | |
| 176 | +// self.moreNavBtn.isHidden = false | |
| 177 | +// }else{ | |
| 178 | +// self.moreNavBtn.isHidden = true | |
| 179 | +// } | |
| 180 | + | |
| 181 | + urlStr = self.checkURLWithStr(urlStr: urlStr) | |
| 182 | + self.currentUrl = urlStr | |
| 183 | + } | |
| 184 | + | |
| 185 | + if navigationAction.navigationType == .other{ | |
| 186 | + //跳转Appstore | |
| 187 | + let url = URL(string: "https://apps.apple.com/cn/app/%E7%BD%91%E5%AE%B6%E5%AE%B6%E5%95%86%E5%AE%B6%E7%89%88/id1337575497") | |
| 188 | + if url == navigationAction.request.url { | |
| 189 | + if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options: [:], completionHandler: nil) | |
| 190 | + } | |
| 191 | + } | |
| 192 | + }else if navigationAction.navigationType == .linkActivated{ | |
| 193 | + let webVC = CNWebViewController() | |
| 194 | + webVC.url = URL(string: urlStr) | |
| 195 | + navigationViewController().pushViewController(webVC, animated: true) | |
| 196 | + decisionHandler(.cancel) | |
| 197 | + return | |
| 198 | + } | |
| 199 | + | |
| 200 | + decisionHandler(.allow) | |
| 201 | + } | |
| 202 | +} | ... | ... |
metaCode/Classes/Main/HomePage/Controller/WebController/CNWebViewController.swift
| ... | ... | @@ -14,6 +14,7 @@ import CNLiveBusinessTools |
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | let WjjH5 = "wjjh5.cnlive.com" |
| 17 | +let ManageshopH5 = "manageshop.cnlive.com" | |
| 17 | 18 | |
| 18 | 19 | class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ |
| 19 | 20 | |
| ... | ... | @@ -265,7 +266,14 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ |
| 265 | 266 | } |
| 266 | 267 | } |
| 267 | 268 | }else if navigationAction.navigationType == .linkActivated{ |
| 268 | - | |
| 269 | + | |
| 270 | + //以后可判断h5地址 ,可跳转原生页面或网页 | |
| 271 | + //暂时只跳h5 | |
| 272 | + let webVC = CNWebViewController() | |
| 273 | + webVC.url = URL(string: urlStr) | |
| 274 | + navigationViewController().pushViewController(webVC, animated: pushAnimated) | |
| 275 | + decisionHandler(.cancel) | |
| 276 | + return | |
| 269 | 277 | |
| 270 | 278 | } |
| 271 | 279 | decisionHandler(.allow) | ... | ... |
metaCode/Classes/Main/HomePage/View/VerticalViews/CNCustomIndexView.swift
| ... | ... | @@ -121,8 +121,8 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange |
| 121 | 121 | self.upSlideView.type = _idModel?.downType |
| 122 | 122 | self.upSlideView.downPath = _idModel?.downPath |
| 123 | 123 | |
| 124 | - self.downSlideView.type = _idModel?.upType | |
| 125 | - self.downSlideView.downPath = _idModel?.upPath | |
| 124 | + self.downSlideView.type = _idModel?.upType | |
| 125 | + self.downSlideView.downPath = _idModel?.upPath | |
| 126 | 126 | |
| 127 | 127 | self.topNavView.setTitleString(title:(_idModel?.name)!) |
| 128 | 128 | ... | ... |
metaCode/Classes/Main/HomePage/View/VerticalViews/DownSlide/CNDownSlideView.swift
| ... | ... | @@ -23,28 +23,30 @@ class CNDownSlideView:UIView{ |
| 23 | 23 | let contentView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height)) |
| 24 | 24 | contentView.backgroundColor = UIColor.clear |
| 25 | 25 | contentView.isUserInteractionEnabled = true |
| 26 | -// let path:UIBezierPath = UIBezierPath.init(roundedRect: contentView.bounds, byRoundingCorners: [.bottomLeft, .bottomRight], cornerRadii: CGSize.init(width: 20, height: 20)) | |
| 27 | -// | |
| 28 | -// let maskLayer:CAShapeLayer = CAShapeLayer() | |
| 29 | -// maskLayer.frame = contentView.bounds | |
| 30 | -// maskLayer.path = path.cgPath | |
| 31 | -// contentView.layer.mask = maskLayer | |
| 32 | - | |
| 33 | -// let imageView = UIImageView(frame: CGRect(x: 10, y: 20, width: contentView.width - 20, height: contentView.height - 40)) | |
| 34 | -// imageView.image = UIImage(named: "homePage_collectMoneyImage") | |
| 35 | -// contentView.addSubview(imageView) | |
| 36 | - | |
| 37 | 26 | return contentView |
| 38 | 27 | }() |
| 39 | 28 | |
| 40 | 29 | //h5网页 |
| 41 | - // TODO: H:-10原为self.height-KTabBarHeight,但有白条,改成了-10 | |
| 42 | - lazy var webView: WKWebView = { | |
| 43 | - let webView = WKWebView.init(frame: CGRectMake(0, 0, self.width, self.height-KTabBarHeight-10)) | |
| 44 | - webView.scrollView.showsVerticalScrollIndicator = false | |
| 45 | - webView.scrollView.showsHorizontalScrollIndicator = false | |
| 46 | - webView.backgroundColor = .clear | |
| 47 | - webView.isOpaque = false | |
| 30 | + lazy var webView: CNWebView = { | |
| 31 | + let configuration = WKWebViewConfiguration() | |
| 32 | + configuration.allowsInlineMediaPlayback = true | |
| 33 | + let preferences = WKPreferences() | |
| 34 | + preferences.javaScriptCanOpenWindowsAutomatically = true | |
| 35 | + preferences.javaScriptEnabled = true | |
| 36 | + configuration.preferences.minimumFontSize = 0.0 | |
| 37 | + configuration.preferences = preferences | |
| 38 | + configuration.userContentController = WKUserContentController() | |
| 39 | + | |
| 40 | + var url:URL? | |
| 41 | + if (_downPath != ""){ | |
| 42 | + url = URL.init(string: _downPath!) | |
| 43 | + }else{ | |
| 44 | + url = nil | |
| 45 | + } | |
| 46 | + let webView = CNWebView(frame: CGRectMake(0, 0, Width, self.height-DownSlideBottomViewHeight), configuration: configuration,url: url) | |
| 47 | + | |
| 48 | + webView.cnWebView.scrollView.showsVerticalScrollIndicator = false | |
| 49 | + webView.cnWebView.scrollView.showsHorizontalScrollIndicator = false | |
| 48 | 50 | return webView |
| 49 | 51 | }() |
| 50 | 52 | |
| ... | ... | @@ -74,12 +76,9 @@ class CNDownSlideView:UIView{ |
| 74 | 76 | // self.subviews.forEach { view in |
| 75 | 77 | // view.removeFromSuperview() |
| 76 | 78 | // }//会删除button |
| 79 | + | |
| 77 | 80 | if(type == UpDownTypeH5){ |
| 78 | 81 | self.addSubview(self.webView) |
| 79 | - if (_downPath != ""){ | |
| 80 | - let webUrl: URL! = URL.init(string: _downPath!) | |
| 81 | - webView.load(URLRequest.init(url:webUrl)) | |
| 82 | - } | |
| 83 | 82 | }else if(type == UpDownTypePage){ |
| 84 | 83 | self.addSubview(self.upSlideVC.view) |
| 85 | 84 | self.upSlideVC.downPath = _downPath |
| ... | ... | @@ -108,18 +107,6 @@ class CNDownSlideView:UIView{ |
| 108 | 107 | let bottomView = UIView(frame: CGRect(x:0, y:self.height - DownSlideBottomViewHeight, width: self.width, height: DownSlideBottomViewHeight)) |
| 109 | 108 | bottomView.backgroundColor = HexColor("#FFFFFF") |
| 110 | 109 | bottomView.isHidden = true |
| 111 | - | |
| 112 | -// let path:UIBezierPath = UIBezierPath.init(roundedRect: bottomView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize.init(width: 50, height: 50)) | |
| 113 | -// let maskLayer:CAShapeLayer = CAShapeLayer() | |
| 114 | -// maskLayer.frame = bottomView.bounds | |
| 115 | -// maskLayer.path = path.cgPath | |
| 116 | -// bottomView.layer.mask = maskLayer | |
| 117 | -// bottomView.clipsToBounds = true | |
| 118 | - | |
| 119 | -// bottomView.layer.cornerRadius = 50 | |
| 120 | -// bottomView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] | |
| 121 | - | |
| 122 | - | |
| 123 | 110 | // 设置阴影效果 |
| 124 | 111 | bottomView.layer.masksToBounds = false |
| 125 | 112 | //定义view的阴影颜色 | ... | ... |
metaCode/Classes/Main/HomePage/View/VerticalViews/UpSlide/CNUpSlideView.swift
| ... | ... | @@ -18,14 +18,30 @@ let UpDownTypeAuthAlertDown = 6///下滑地址 认证-弹窗 |
| 18 | 18 | ///上滑显示的VIew |
| 19 | 19 | class CNUpSlideView:UIView{ |
| 20 | 20 | |
| 21 | - lazy var webView: WKWebView = { | |
| 22 | - let webView = WKWebView.init(frame: CGRectMake(10, KNavigationHeight+KStatusBarHeight+10, self.width - 20, self.height-KNavigationHeight-KStatusBarHeight-10)) | |
| 23 | - webView.scrollView.showsVerticalScrollIndicator = false | |
| 24 | - webView.scrollView.showsHorizontalScrollIndicator = false | |
| 25 | - webView.backgroundColor = .clear | |
| 26 | - webView.layer.cornerRadius = 29 | |
| 27 | - webView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] | |
| 28 | - webView.clipsToBounds = true | |
| 21 | + lazy var webView: CNWebView = { | |
| 22 | + let configuration = WKWebViewConfiguration() | |
| 23 | + configuration.allowsInlineMediaPlayback = true | |
| 24 | + let preferences = WKPreferences() | |
| 25 | + preferences.javaScriptCanOpenWindowsAutomatically = true | |
| 26 | + preferences.javaScriptEnabled = true | |
| 27 | + configuration.preferences.minimumFontSize = 0.0 | |
| 28 | + configuration.preferences = preferences | |
| 29 | + configuration.userContentController = WKUserContentController() | |
| 30 | + | |
| 31 | + var url:URL? | |
| 32 | + if (_downPath != ""){ | |
| 33 | + url = URL.init(string: _downPath!) | |
| 34 | + }else{ | |
| 35 | + url = nil | |
| 36 | + } | |
| 37 | + let webView = CNWebView(frame: CGRectMake(10, KNavigationHeight+KStatusBarHeight+10, self.width - 20, self.height-KNavigationHeight-KStatusBarHeight-10), configuration: configuration,url: url) | |
| 38 | + | |
| 39 | + webView.cnWebView.scrollView.showsVerticalScrollIndicator = false | |
| 40 | + webView.cnWebView.scrollView.showsHorizontalScrollIndicator = false | |
| 41 | + webView.cnWebView.backgroundColor = .clear | |
| 42 | + webView.cnWebView.layer.cornerRadius = 29 | |
| 43 | + webView.cnWebView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] | |
| 44 | + webView.cnWebView.clipsToBounds = true | |
| 29 | 45 | return webView |
| 30 | 46 | }() |
| 31 | 47 | |
| ... | ... | @@ -51,10 +67,6 @@ class CNUpSlideView:UIView{ |
| 51 | 67 | } |
| 52 | 68 | if(type == UpDownTypeH5){ |
| 53 | 69 | self.addSubview(self.webView) |
| 54 | - if (_downPath != ""){ | |
| 55 | - let webUrl: URL! = URL.init(string: _downPath!) | |
| 56 | - webView.load(URLRequest.init(url:webUrl)) | |
| 57 | - } | |
| 58 | 70 | } |
| 59 | 71 | else if(type == UpDownTypePage){ |
| 60 | 72 | ... | ... |