CNHomeWebViewController.swift
4.8 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
//
// CNHomeWebViewController.swift
// metaCode
//
// Created by zx on 2023/9/21.
// 首页
import Foundation
import WebKit
import WebViewJavascriptBridge
import CNLiveShareToolKit
import CommonCrypto
import CNLiveBusinessTools
import SKPhotoBrowser
class CNHomeWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
var bridge:WKWebViewJavascriptBridge?
var currentUrl:String = ""//当前网页的url
lazy var webView: CNWebView = {
let configuration = WKWebViewConfiguration()
configuration.allowsInlineMediaPlayback = true
let preferences = WKPreferences()
preferences.javaScriptCanOpenWindowsAutomatically = true
preferences.javaScriptEnabled = true
configuration.preferences.minimumFontSize = 0.0
configuration.preferences = preferences
configuration.userContentController = WKUserContentController()
let webView = CNWebView(frame: CGRectMake(0, KNavigationHeight, Width, Height-KNavigationHeight-KTabBarHeight), configuration: configuration, url: _url)
webView.cnWebView.scrollView.showsVerticalScrollIndicator = false
webView.cnWebView.scrollView.showsHorizontalScrollIndicator = false
webView.isCNWebController = true
return webView
}()
var _url:URL?
var url:URL? {
get{
return _url
}
set{
_url = newValue!
}
}
deinit {
self.webView.cnWebView.stopLoading()
self.webView.cnWebView.navigationDelegate = nil
self.webView.cnWebView.uiDelegate = nil
self.webView.webViewRemoveScriptMessageHandler()
print("WKWebView dealloc")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.h5StopVideoPlayer()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
homeTopNavView.frame = CGRect(x: 0, y: 0, width: view.width, height:topNavViewHeight)// topNavViewHeight + get_system_statusBar_height())
let lrSpace = 0.0
homeTitleLabel.frame = CGRect(x: CGFloat(Int(lrSpace)) , y: topNavViewHeight - get_system_nav_ui_height() - topNavViewSubUIContentOffsetY, width: topNavView.width - (lrSpace * 2), height: get_system_nav_ui_height())
homeTopLine.frame = CGRect(x: 0, y: topNavViewHeight - 1, width: topNavView.width, height: 1)
}
public lazy var homeTopNavView: UIView = {
let topNavView = UIView.init(frame: CGRect(x: 0, y: 0, width: view.width, height: topNavViewHeight))
topNavView.backgroundColor = HexColor("#F7F8FA")
return topNavView
}()
public lazy var homeTitleLabel: UILabel = {
let titleLabel = UILabel.init(frame: CGRectMake(0, topNavView.height - get_system_nav_ui_height(), topNavView.frame.size.width, get_system_nav_ui_height()))
titleLabel.textColor = HexColor("#333333")
titleLabel.font = Font_18_Fit
titleLabel.textAlignment = .center
titleLabel.text = "AI 智能体"
return titleLabel
}()
public lazy var homeTopLine: UIImageView = {
let topLine = UIImageView.init(frame: CGRect(x: 0, y: topNavView.height - 1, width: view.width, height: 1))
topLine.backgroundColor = .clear
return topLine
}()
override func viewDidLoad() {
super.viewDidLoad()
navigationBarHidden = true
self.topNavViewHeight = get_system_nav_height()
view.addSubview(homeTopNavView)
homeTopNavView.addSubview(homeTitleLabel)
homeTopNavView.addSubview(homeTopLine)
self.view.addSubview(self.webView)
self.webView.webControllerUpdateNavBlock = { [weak self] isFinish , title,isDecidePolicy ,urlStr in
if isFinish{
}else if isDecidePolicy{
}
}
self.webView.webControllerBackNavBlock = { [weak self] in
self?.navigationController?.popViewController(animated: true)
}
self.webView.webControllerUpdateCurrentUrlBlock = { [weak self] currentUrlStr in
self!.currentUrl = currentUrlStr
}
self.webView.snp.makeConstraints { make in
make.top.equalTo(get_system_nav_height())
make.left.right.bottom.equalToSuperview()
}
// let webVC = CNWebViewController()
// webVC.url = URL(string: "https://wjjh5.cnlive.com/chatgpt/#/pages/index/index?id=1836691195091464194")
// navigationViewController().pushViewController(webVC, animated: true)
}
func h5StopVideoPlayer(){
// call h5停止播放视频
let data: [String: Any] = ["stop": true]
self.bridge?.callHandler("wjjStopVideoPlayer", data: data, responseCallback: { responseData in
print("wjjStopVideoPlayer:\(responseData ?? "")")
})
}
}