Commit b3173611024e86b3a81301ce1ddf45120aa4630c

Authored by liushiyu
2 parents 86105f9d cc7ae3b3
@@ -67,6 +67,7 @@ target 'metaCode' do @@ -67,6 +67,7 @@ target 'metaCode' do
67 # pod 'QMUIKit' 67 # pod 'QMUIKit'
68 pod 'YYWebImage', :git => 'https://gitee.com/mirrors/YYWebImage.git' 68 pod 'YYWebImage', :git => 'https://gitee.com/mirrors/YYWebImage.git'
69 69
  70 + #网页交互
70 pod 'WebViewJavascriptBridge' 71 pod 'WebViewJavascriptBridge'
71 72
72 #依赖三方私有库,如果里面有.a的时候加上这个 73 #依赖三方私有库,如果里面有.a的时候加上这个
metaCode/Classes/Common/Base/CNLiveBaseViewController.swift
@@ -108,7 +108,9 @@ class CNLiveBaseViewController: UIViewController { @@ -108,7 +108,9 @@ class CNLiveBaseViewController: UIViewController {
108 btn.frame = CGRect(x: lastBtn != nil ? (lastBtn!.origin.x - btn.width) : (topNavView.width - CNLiveBaseViewController.kTopNavLeftRightOffset - btn.width), y: topNavViewHeight - btn.height, width: btn.width, height: btn.height) 108 btn.frame = CGRect(x: lastBtn != nil ? (lastBtn!.origin.x - btn.width) : (topNavView.width - CNLiveBaseViewController.kTopNavLeftRightOffset - btn.width), y: topNavViewHeight - btn.height, width: btn.width, height: btn.height)
109 lastBtn = btn 109 lastBtn = btn
110 } 110 }
111 - rightNavSpace = CGRectGetMaxX(lastBtn!.frame) 111 + if _rightNavBtns.count > 0{
  112 + rightNavSpace = CGRectGetMaxX(lastBtn!.frame)
  113 + }
112 viewWillLayoutSubviews() 114 viewWillLayoutSubviews()
113 } 115 }
114 } 116 }
metaCode/Classes/Extensions/String+Extension.swift
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 7
8 8
9 import UIKit 9 import UIKit
10 - 10 +import CommonCrypto
11 11
12 extension String { 12 extension String {
13 /// Calculate text's height from `width` and `front`. 13 /// Calculate text's height from `width` and `front`.
@@ -25,5 +25,63 @@ extension String { @@ -25,5 +25,63 @@ extension String {
25 let substring = self[startIndex..<endIndex] 25 let substring = self[startIndex..<endIndex]
26 return String(substring) 26 return String(substring)
27 } 27 }
  28 +
  29 + //DES加密
  30 + func crypt(operation:CCOperation, key: String) -> String? {
  31 +
  32 + if let keyData = key.data(using: .utf8) {
  33 +
  34 + var cryptData: Data?
  35 +
  36 + if operation == kCCEncrypt {
  37 + cryptData = self.data(using: .utf8)
  38 + } else {
  39 + cryptData = Data(base64Encoded: self, options: .ignoreUnknownCharacters)
  40 + }
  41 +
  42 + if cryptData == nil {
  43 + return nil
  44 + }
  45 +
  46 + let algoritm: CCAlgorithm = CCAlgorithm(kCCAlgorithmDES)
  47 + let option: CCOptions = CCOptions(kCCOptionPKCS7Padding)
  48 +
  49 + let keyBytes = [UInt8](keyData)
  50 + let keyLength = kCCKeySizeDES
  51 +
  52 + let dataIn = [UInt8](cryptData!)
  53 + let dataInlength = cryptData!.count
  54 +
  55 + let dataOutAvailable = Int(dataInlength + kCCBlockSizeDES)
  56 + let dataOut = UnsafeMutablePointer<UInt8>.allocate(capacity: dataOutAvailable)
  57 + let dataOutMoved = UnsafeMutablePointer<Int>.allocate(capacity: 1)
  58 +
  59 + dataOutMoved.initialize(to: 0)
  60 +
  61 + let cryptStatus = CCCrypt(operation, algoritm, option, keyBytes, keyLength, keyBytes, dataIn, dataInlength, dataOut, dataOutAvailable, dataOutMoved)
  62 +
  63 + var data: Data?
  64 +
  65 + if CCStatus(cryptStatus) == CCStatus(kCCSuccess) {
  66 + data = Data(bytesNoCopy: dataOut, count: dataOutMoved.pointee, deallocator: .none)
  67 + }
  68 +
  69 + dataOutMoved.deallocate()
  70 + dataOut.deallocate()
  71 +
  72 + if data == nil {
  73 + return nil
  74 + }
  75 +
  76 + if operation == kCCEncrypt {
  77 + data = data!.base64EncodedData(options: .lineLength64Characters)
  78 + }
  79 +
  80 + return String(data: data!, encoding: .utf8)
  81 + }
  82 +
  83 + return nil
  84 +
  85 + }
28 86
29 } 87 }
metaCode/Classes/Main/HomePage/Controller/DownSlideController/CNUpSlideDetailViewController.swift
@@ -20,6 +20,8 @@ enum CNLiveHomePageCellType { @@ -20,6 +20,8 @@ enum CNLiveHomePageCellType {
20 case playletToCourse 20 case playletToCourse
21 } 21 }
22 22
  23 +let allCourseCellHeight:CGFloat = 75
  24 +
23 class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSource, UITableViewDelegate,EmptyDataSetSource, EmptyDataSetDelegate { 25 class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSource, UITableViewDelegate,EmptyDataSetSource, EmptyDataSetDelegate {
24 26
25 //slideModel 27 //slideModel
@@ -96,8 +98,9 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou @@ -96,8 +98,9 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
96 98
97 private func setupUI() { 99 private func setupUI() {
98 self.view.layer.masksToBounds = true 100 self.view.layer.masksToBounds = true
  101 + self.view.backgroundColor = .white
99 self.view.addSubview(self.tableView) 102 self.view.addSubview(self.tableView)
100 - self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight) 103 + self.tableView.frame = CGRect(x: 0, y: KStatusBarHeight, width: KSreenWidth, height: KSreenHeight-KStatusBarHeight)
101 view.addSubview(closeBtn) 104 view.addSubview(closeBtn)
102 view.addGestureRecognizer(dismissPanGesture) 105 view.addGestureRecognizer(dismissPanGesture)
103 } 106 }
@@ -266,7 +269,7 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou @@ -266,7 +269,7 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
266 }else if self.cellType == .course || self.cellType == .playletToCourse{ 269 }else if self.cellType == .course || self.cellType == .playletToCourse{
267 if self.slideModel?.type == SlideModelTypeAllCourse12{ 270 if self.slideModel?.type == SlideModelTypeAllCourse12{
268 //全部课程 271 //全部课程
269 - return 75 272 + return allCourseCellHeight
270 }else if self.slideModel?.type == SlideModelTypeOneCourse75{ 273 }else if self.slideModel?.type == SlideModelTypeOneCourse75{
271 //大图课程 274 //大图课程
272 return KSreenWidth*(KSreenWidth/DownSlideSingleCourseW) 275 return KSreenWidth*(KSreenWidth/DownSlideSingleCourseW)
metaCode/Classes/Main/HomePage/Controller/WebController/CNWebViewController.swift
@@ -7,17 +7,46 @@ @@ -7,17 +7,46 @@
7 7
8 import Foundation 8 import Foundation
9 import WebKit 9 import WebKit
  10 +import WebViewJavascriptBridge
  11 +import CNLiveShareToolKit
  12 +import CommonCrypto
  13 +import CNLiveBusinessTools
  14 +
  15 +
  16 +let WjjH5 = "wjjh5.cnlive.com"
10 17
11 class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ 18 class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
12 19
  20 + var bridge:WKWebViewJavascriptBridge?
  21 + var currentUrl:String = ""//当前网页的url
  22 +
13 lazy var webView: WKWebView = { 23 lazy var webView: WKWebView = {
14 - let webView = WKWebView.init(frame: CGRectMake(0, 0, Width, Height)) 24 + let configuration = WKWebViewConfiguration()
  25 + configuration.allowsInlineMediaPlayback = true
  26 + let preferences = WKPreferences()
  27 + preferences.javaScriptCanOpenWindowsAutomatically = true
  28 + preferences.javaScriptEnabled = true
  29 + configuration.preferences.minimumFontSize = 0.0
  30 + configuration.preferences = preferences
  31 + configuration.userContentController = WKUserContentController()
  32 +
  33 + let webView = WKWebView(frame: CGRectMake(0, 0, Width, Height), configuration: configuration)
15 webView.scrollView.showsVerticalScrollIndicator = false 34 webView.scrollView.showsVerticalScrollIndicator = false
16 webView.scrollView.showsHorizontalScrollIndicator = false 35 webView.scrollView.showsHorizontalScrollIndicator = false
17 - webView.navigationDelegate = self 36 +// webView.navigationDelegate = self
18 return webView 37 return webView
19 }() 38 }()
20 39
  40 + lazy var moreNavBtn: UIButton = {
  41 + let moreNavBtn = UIButton(type: .custom)
  42 + moreNavBtn.frame = CGRect(x: 0, y: KStatusBarHeight, width: KNavigationHeight-KStatusBarHeight, height: KNavigationHeight-KStatusBarHeight)
  43 + moreNavBtn.backgroundColor = .clear
  44 + moreNavBtn.setImage(UIImage(named: "web_more"), for: .normal)
  45 + moreNavBtn.addTarget(self, action: #selector(moreNavBtnAction), for: .touchUpInside)
  46 + return moreNavBtn
  47 + }()
  48 +
  49 +
21 var _url:URL? 50 var _url:URL?
22 var url:URL? { 51 var url:URL? {
23 get{ 52 get{
@@ -25,19 +54,6 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -25,19 +54,6 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
25 } 54 }
26 set{ 55 set{
27 _url = newValue! 56 _url = newValue!
28 - if (_url != nil){  
29 - let webUrl: URL! = _url!  
30 - webView.evaluateJavaScript("navigator.userAgent") { [self] result, error in  
31 - let userAgent = result as! String  
32 - if error == nil && userAgent.count > 0 {  
33 - if !userAgent.contains(CNLiveMCEnvironmentManager.shared.base_web_UA) {  
34 - let newUserAgent = userAgent + CNLiveMCEnvironmentManager.shared.base_web_UA  
35 - webView.customUserAgent = newUserAgent  
36 - }  
37 - }  
38 - webView.load(URLRequest.init(url:webUrl))  
39 - }  
40 - }  
41 } 57 }
42 } 58 }
43 59
@@ -49,42 +65,197 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -49,42 +65,197 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
49 make.top.equalTo(get_system_nav_height()) 65 make.top.equalTo(get_system_nav_height())
50 make.left.right.bottom.equalToSuperview() 66 make.left.right.bottom.equalToSuperview()
51 } 67 }
52 - 68 + webView.evaluateJavaScript("navigator.userAgent") { [self] result, error in
  69 + let userAgent = result as! String
  70 + if error == nil && userAgent.count > 0 {
  71 + if !userAgent.contains(CNLiveMCEnvironmentManager.shared.base_web_UA) {
  72 + let newUserAgent = userAgent + CNLiveMCEnvironmentManager.shared.base_web_UA
  73 + webView.customUserAgent = newUserAgent
  74 +
  75 + if (_url != nil){
  76 + let urlStr = self.checkURLWithStr(urlStr: _url!.absoluteString)
  77 + self.currentUrl = urlStr
  78 +
  79 + webView.load(URLRequest.init(url:URL(string: urlStr)!))
  80 + }
  81 + self.configBridge()
  82 + self.configBridgeRegister()
  83 + }
  84 + }
  85 + }
  86 + }
  87 +
  88 + func configBridge(){
  89 + WKWebViewJavascriptBridge.enableLogging()
  90 + self.bridge = WKWebViewJavascriptBridge(for: self.webView)
  91 + self.bridge?.setWebViewDelegate(self)
  92 + }
  93 + //h5拉起原生分享 js call oc
  94 + func configBridgeRegister() -> Void {
  95 + self.bridge?.registerHandler("wjjylzgVideoShare", handler: { data, responseCallback in
  96 +// print("js call oc\(data)")
  97 + let dic = data as! Dictionary<String, String>
  98 + 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: self, topImage: [], topTitles: [], platformType: .all) { title in
  99 +
  100 + } completerBlock: { resultType, platformType, typeString in
  101 + if resultType == .succ{
  102 +
  103 + }
  104 + }
  105 +
  106 + })
  107 + }
  108 +
  109 + //点击...分享获取h5参数oc call js
  110 + func configBridgeCallHander() -> Void {
  111 + self.bridge?.callHandler("wjjClientGetShareParaFromJS", data: ["":""], responseCallback: { data in
  112 +// print("js call oc\(data)")
  113 + let dic = data as! Dictionary<String, String>
  114 +// let shareType = dic["shareType"]
  115 +// let contentIdStr = dic["activityId"]
  116 + let title = dic["title"]
  117 + let desc = dic["desc"]
  118 + let shareImg = dic["shareImg"]
  119 +
  120 + var shareUrl = ""
  121 + if let tempShareUrl = dic["shareUrl"]{
  122 + if tempShareUrl == ""{
  123 + shareUrl = self.currentUrl
  124 + }else{
  125 + shareUrl = tempShareUrl
  126 + }
  127 + }else{
  128 + shareUrl = self.currentUrl
  129 + }
  130 +
  131 + CNLiveShareManager.showShareViewWithParam(forShareTitle: title, shareUrl: shareUrl, shareDesc: desc, shareImage: shareImg, screenFull: false, hiddenWjj: true, hiddenQQ: false, hiddenWB: true, hiddenLifeCircle: true, hiddenWechatCircle: false, hiddenWechat: false, hiddenSafari: true, formVC: self, topImage: [], topTitles: [], platformType: .all) { title in
  132 +
  133 + } completerBlock: { resultType, platformType, typeString in
  134 + if resultType == .succ{
  135 +
  136 + }
  137 + }
  138 + })
  139 + }
  140 +
  141 + func checkURLWithStr(urlStr:String) -> String{
  142 + if URL(string: urlStr)?.host != WjjH5 {
  143 + return urlStr//不是wjjh5不作处理
  144 + }
  145 + var str = urlStr
  146 + let date = Date()
  147 + let formatter = DateFormatter()
  148 + formatter.dateFormat = "yyyyMMdd"
  149 + let dateStr = formatter.string(from: date)
  150 + let sidStr = String(format: "%@%@", UserInfoManager.shared.userInfo.uid,dateStr)
  151 + let signStr = sidStr.crypt(operation: CCOperation(kCCEncrypt), key: CNLiveMCEnvironmentManager.shared.appKey)
  152 + //看是 appKey还是appKeywjj
  153 + let sidSignStr = (signStr ?? "").isEmpty ? "" : signStr
  154 + let sourceArray = str.components(separatedBy: "?")
  155 + let buildVersion = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
  156 + let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
  157 + let uuid = CNLiveBusinessTools.getUidForStat(Date())
  158 + if sourceArray.count == 1{
  159 + //是wjjh5且无参数
  160 + 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)
  161 + return str
  162 + }
  163 + //是wjjh5且有参数
  164 + let paraArr = NSMutableArray(array: ["shareSid=","sid=","plat=","ver=","version=","wjjFrom=","wjjUUID=","appId=","voteId=","wjjToken="])
  165 + 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])
  166 + var i = 0
  167 + for paraStr in paraArr{
  168 + let tempStr = paraStr as! String
  169 + let paramStr = "&".appending(tempStr)
  170 + let paramStr2 = "?".appending(tempStr)
  171 +
  172 + if str.contains(paramStr){
  173 + //包含则替换 &sid=
  174 + let lastStr = str.components(separatedBy: tempStr).last
  175 + let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)!
  176 + let oldStr = tempStr.appending(lastSeparatedStr)
  177 + let tempValueStr = tempStr.appending(valueArr[i] as! String)
  178 + str = str.replacingOccurrences(of: oldStr, with: tempValueStr)
  179 + }else if str.contains(paramStr2){
  180 + //包含则替换 &sid=
  181 + let lastStr = str.components(separatedBy: tempStr).last
  182 + let lastSeparatedStr = (lastStr?.components(separatedBy: "&").first)!
  183 + let oldStr = tempStr.appending(lastSeparatedStr)
  184 + let tempValueStr = tempStr.appending(valueArr[i] as! String)
  185 + str = str.replacingOccurrences(of: oldStr, with: tempValueStr)
  186 + }else{
  187 + //不包含则拼接
  188 + str = String(format: "%@&%@%@", str,tempStr,valueArr[i] as! String)
  189 + }
  190 + i = i + 1
  191 + }
  192 + return str
  193 + }
  194 +
  195 + // MARK: - BtnAction
  196 + // 内部链接右上角···分享
  197 + @objc func moreNavBtnAction(){
  198 + self.configBridgeCallHander()
  199 + }
  200 + override func ClickBackBtn() {
  201 + if self.webView.canGoBack{
  202 + self.webView.goBack()
  203 + }else{
  204 + super.ClickBackBtn()
  205 + }
53 } 206 }
54 207
55 // MARK: - WKWebViewDelegate 208 // MARK: - WKWebViewDelegate
56 // 页面开始加载时调用 209 // 页面开始加载时调用
57 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { 210 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
58 - print("didStartProvisionalNavigation") 211 +// print("didStartProvisionalNavigation")
59 } 212 }
60 // 当内容开始返回时调用 213 // 当内容开始返回时调用
61 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) { 214 func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
62 - print("didCommit") 215 +// print("didCommit")
63 } 216 }
  217 +
64 // 页面加载完成之后调用 218 // 页面加载完成之后调用
65 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 219 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
66 - print("didFinish") 220 +// print("didFinish")
67 titleName = webView.title! 221 titleName = webView.title!
68 } 222 }
69 // 页面加载失败时调用 223 // 页面加载失败时调用
70 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { 224 func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
71 - print("didFailProvisionalNavigation") 225 +// print("didFailProvisionalNavigation")
72 } 226 }
73 // 接收到服务器跳转请求之后调用 227 // 接收到服务器跳转请求之后调用
74 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) { 228 func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
75 - print("didReceiveServerRedirectForProvisionalNavigation") 229 +// print("didReceiveServerRedirectForProvisionalNavigation")
76 } 230 }
77 // 在收到响应后,决定是否跳转 -> 默认允许 231 // 在收到响应后,决定是否跳转 -> 默认允许
78 func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { 232 func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
79 - print("decidePolicyFor") 233 +
  234 +// print("decidePolicyFornavigationResponse")
  235 +
80 //允许跳转 236 //允许跳转
81 decisionHandler(.allow) 237 decisionHandler(.allow)
82 //不允许跳转 238 //不允许跳转
83 // decisionHandler(.cancel) 239 // decisionHandler(.cancel)
84 } 240 }
85 // 在发送请求之前,决定是否跳转 -> 默认允许 241 // 在发送请求之前,决定是否跳转 -> 默认允许
86 - @available(iOS 13.0, *)  
87 - func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) { 242 + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  243 +// print("decidePolicyFornavigationAction")
  244 +
  245 + var urlStr = (navigationAction.request.url?.absoluteString)!
  246 +
  247 + if navigationAction.request.url?.host == WjjH5 {
  248 +
  249 + if urlStr.contains("&isWjjReport=true") || urlStr.contains("?isWjjReport=true"){
  250 + self.rightNavBtns = [self.moreNavBtn]
  251 + self.moreNavBtn.isHidden = false
  252 + }else{
  253 + self.moreNavBtn.isHidden = true
  254 + }
  255 +
  256 + urlStr = self.checkURLWithStr(urlStr: urlStr)
  257 + self.currentUrl = urlStr
  258 + }
88 259
89 if navigationAction.navigationType == .other{ 260 if navigationAction.navigationType == .other{
90 //跳转Appstore 261 //跳转Appstore
@@ -93,7 +264,10 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{ @@ -93,7 +264,10 @@ class CNWebViewController:CNLiveBaseViewController ,WKNavigationDelegate{
93 if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options: [:], completionHandler: nil) 264 if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options: [:], completionHandler: nil)
94 } 265 }
95 } 266 }
  267 + }else if navigationAction.navigationType == .linkActivated{
  268 +
  269 +
96 } 270 }
97 - decisionHandler(.allow, preferences) 271 + decisionHandler(.allow)
98 } 272 }
99 } 273 }
metaCode/Classes/Main/HomePage/View/VerticalViews/MainView/CNIDCardView.swift
@@ -73,39 +73,6 @@ class CNIDCardView: UIView{ @@ -73,39 +73,6 @@ class CNIDCardView: UIView{
73 if respStatue == .success { 73 if respStatue == .success {
74 let cardArray = result as! NSMutableArray 74 let cardArray = result as! NSMutableArray
75 self.cardUIWithArray(cardArr: cardArray) 75 self.cardUIWithArray(cardArr: cardArray)
76 -  
77 -// if cardArray.count > 0{  
78 -// for i in (0..<cardArray.count){  
79 -// let idCardModel = cardArray[i] as! MineStandInfoModel  
80 -// let siBianGap:CGFloat = 17  
81 -// let labelsGap:CGFloat = 10  
82 -//  
83 -// let keyLabel = UILabel.init()  
84 -// keyLabel.textColor = HexColor(_idModel?.backgroundColor ?? "")  
85 -// keyLabel.textAlignment = .left  
86 -// keyLabel.font = Font(15)  
87 -// keyLabel.backgroundColor = .clear  
88 -// keyLabel.text = idCardModel.name ?? ""  
89 -// keyLabel.frame = CGRect(x: siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: 70, height: 21)  
90 -// keyLabel.adjustsFontSizeToFitWidth = true  
91 -// keyLabel.tag = 10000+i  
92 -// self.addSubview(keyLabel)  
93 -//  
94 -// let valueLabel = UILabel.init()  
95 -// valueLabel.textColor = HexColor(_idModel?.backgroundColor ?? "")  
96 -// valueLabel.textAlignment = .left  
97 -// valueLabel.font = Font(15)  
98 -// valueLabel.backgroundColor = .clear  
99 -// valueLabel.text = idCardModel.userInfo ?? ""  
100 -// valueLabel.frame = CGRect(x: keyLabel.right+labelsGap+siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: self.width-keyLabel.right-labelsGap-siBianGap-5, height: 21)  
101 -// valueLabel.adjustsFontSizeToFitWidth = true  
102 -// valueLabel.tag = 20000+i  
103 -// self.addSubview(valueLabel)  
104 -//  
105 -// }  
106 -// }else{  
107 -// //没数据  
108 -// }  
109 } 76 }
110 } 77 }
111 } 78 }
@@ -116,6 +83,24 @@ class CNIDCardView: UIView{ @@ -116,6 +83,24 @@ class CNIDCardView: UIView{
116 view.removeFromSuperview() 83 view.removeFromSuperview()
117 } 84 }
118 } 85 }
  86 +
  87 + var maxLblWidth:CGFloat = 0
  88 + for model in cardArr {
  89 + let idCardMdl = model as! MineStandInfoModel
  90 +
  91 + let keyLabel = UILabel.init()
  92 + keyLabel.textAlignment = .left
  93 + keyLabel.font = Font(15)
  94 + keyLabel.backgroundColor = .clear
  95 + keyLabel.text = idCardMdl.name ?? ""
  96 + keyLabel.sizeToFit()
  97 + let lblWidth = keyLabel.bounds.size.width
  98 + if maxLblWidth < lblWidth{
  99 + //更新更大的label宽度
  100 + maxLblWidth = lblWidth
  101 + }
  102 + }
  103 +
119 let cardArray = NSMutableArray(array: cardArr) 104 let cardArray = NSMutableArray(array: cardArr)
120 if cardArray.count > 0{ 105 if cardArray.count > 0{
121 for i in (0..<cardArray.count){ 106 for i in (0..<cardArray.count){
@@ -123,16 +108,48 @@ class CNIDCardView: UIView{ @@ -123,16 +108,48 @@ class CNIDCardView: UIView{
123 let siBianGap:CGFloat = 17 108 let siBianGap:CGFloat = 17
124 let labelsGap:CGFloat = 10 109 let labelsGap:CGFloat = 10
125 110
126 - let keyLabel = UILabel.init()  
127 - keyLabel.textColor = HexColor(_idModel?.backgroundColor ?? "")  
128 - keyLabel.textAlignment = .left  
129 - keyLabel.font = Font(15)  
130 - keyLabel.backgroundColor = .clear  
131 - keyLabel.text = idCardModel.name ?? ""  
132 - keyLabel.frame = CGRect(x: siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: 70, height: 21)  
133 - keyLabel.adjustsFontSizeToFitWidth = true  
134 - keyLabel.tag = 10000+i  
135 - self.addSubview(keyLabel) 111 + var keyLblRight:CGFloat = 0
  112 + if idCardModel.name?.count == 2{
  113 + //2个字特殊处理,2边对齐
  114 + let keyLabel1 = UILabel.init()
  115 + keyLabel1.textColor = HexColor(_idModel?.backgroundColor ?? "")
  116 + keyLabel1.textAlignment = .left
  117 + keyLabel1.font = Font(15)
  118 + keyLabel1.backgroundColor = .clear
  119 + keyLabel1.text = idCardModel.name?.subString(start: 0, length: 1) ?? ""
  120 + keyLabel1.sizeToFit()
  121 + keyLabel1.frame = CGRect(x: siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: maxLblWidth, height: keyLabel1.bounds.size.height)
  122 + keyLabel1.adjustsFontSizeToFitWidth = true
  123 + keyLabel1.tag = 10000+i+100
  124 + self.addSubview(keyLabel1)
  125 +
  126 + let keyLabel2 = UILabel.init()
  127 + keyLabel2.textColor = HexColor(_idModel?.backgroundColor ?? "")
  128 + keyLabel2.textAlignment = .right
  129 + keyLabel2.font = Font(15)
  130 + keyLabel2.backgroundColor = .clear
  131 + keyLabel2.text = idCardModel.name?.subString(start: 1, length: 1) ?? ""
  132 + keyLabel2.sizeToFit()
  133 + keyLabel2.frame = CGRect(x: siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: maxLblWidth, height: keyLabel1.bounds.size.height)
  134 + keyLabel2.adjustsFontSizeToFitWidth = true
  135 + keyLabel2.tag = 10000+i+200
  136 + self.addSubview(keyLabel2)
  137 + keyLblRight = keyLabel2.right
  138 + }else{
  139 + //其他字数左对齐
  140 + let keyLabel = UILabel.init()
  141 + keyLabel.textColor = HexColor(_idModel?.backgroundColor ?? "")
  142 + keyLabel.textAlignment = .left
  143 + keyLabel.font = Font(15)
  144 + keyLabel.backgroundColor = .clear
  145 + keyLabel.text = idCardModel.name ?? ""
  146 + keyLabel.sizeToFit()
  147 + keyLabel.frame = CGRect(x: siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: keyLabel.bounds.size.width, height: keyLabel.bounds.size.height)
  148 + keyLabel.adjustsFontSizeToFitWidth = true
  149 + keyLabel.tag = 10000+i
  150 + self.addSubview(keyLabel)
  151 + keyLblRight = keyLabel.right
  152 + }
136 153
137 let valueLabel = UILabel.init() 154 let valueLabel = UILabel.init()
138 valueLabel.textColor = HexColor(_idModel?.backgroundColor ?? "") 155 valueLabel.textColor = HexColor(_idModel?.backgroundColor ?? "")
@@ -140,7 +157,7 @@ class CNIDCardView: UIView{ @@ -140,7 +157,7 @@ class CNIDCardView: UIView{
140 valueLabel.font = Font(15) 157 valueLabel.font = Font(15)
141 valueLabel.backgroundColor = .clear 158 valueLabel.backgroundColor = .clear
142 valueLabel.text = idCardModel.userInfo ?? "" 159 valueLabel.text = idCardModel.userInfo ?? ""
143 - valueLabel.frame = CGRect(x: keyLabel.right+labelsGap+siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: self.width-keyLabel.right-labelsGap-siBianGap-5, height: 21) 160 + valueLabel.frame = CGRect(x: keyLblRight+labelsGap+siBianGap, y: siBianGap+CGFloat(i)*21+CGFloat(i)*labelsGap, width: self.width-keyLblRight-labelsGap-siBianGap-5, height: 21)
144 valueLabel.adjustsFontSizeToFitWidth = true 161 valueLabel.adjustsFontSizeToFitWidth = true
145 valueLabel.tag = 20000+i 162 valueLabel.tag = 20000+i
146 self.addSubview(valueLabel) 163 self.addSubview(valueLabel)
metaCode/Classes/Main/HomePage/View/VerticalViews/MainView/CNMainView.swift
@@ -56,35 +56,51 @@ class CNFrontMainView : UIView{ @@ -56,35 +56,51 @@ class CNFrontMainView : UIView{
56 make.bottom.equalToSuperview() 56 make.bottom.equalToSuperview()
57 } 57 }
58 58
  59 +
  60 + frontDescContentView.addSubview(self.agencyTipsLabel)
  61 + agencyTipsLabel.snp.makeConstraints { make in
  62 + make.centerX.equalToSuperview()
  63 + make.bottom.equalToSuperview().offset(-62-36-8)
  64 + make.width.equalTo(self.width-60)
  65 + }
  66 +
  67 + frontDescContentView.addSubview(self.enterpriseTipsLabel)
  68 + enterpriseTipsLabel.snp.makeConstraints { make in
  69 + make.centerX.equalToSuperview()
  70 + make.bottom.equalTo(self.agencyTipsLabel.snp.top).offset(-2)
  71 + make.width.equalTo(self.agencyTipsLabel.snp.width)
  72 + }
  73 +
  74 +
59 frontDescContentView.addSubview(self.addStandBtn) 75 frontDescContentView.addSubview(self.addStandBtn)
60 addStandBtn.snp.makeConstraints { make in 76 addStandBtn.snp.makeConstraints { make in
61 make.centerX.equalToSuperview() 77 make.centerX.equalToSuperview()
62 - make.bottom.equalToSuperview().offset(-30) 78 + make.bottom.equalToSuperview().offset(-62)
63 make.width.equalTo(150) 79 make.width.equalTo(150)
64 - make.height.equalTo(39) 80 + make.height.equalTo(36)
65 } 81 }
66 82
67 frontDescContentView.addSubview(self.personalStandBtn) 83 frontDescContentView.addSubview(self.personalStandBtn)
68 personalStandBtn.snp.makeConstraints { make in 84 personalStandBtn.snp.makeConstraints { make in
69 make.right.equalToSuperview().offset(-self.width/2) 85 make.right.equalToSuperview().offset(-self.width/2)
70 - make.bottom.equalToSuperview().offset(-45) 86 + make.bottom.equalTo(self.addStandBtn.snp.bottom)
71 make.width.equalTo(120) 87 make.width.equalTo(120)
72 - make.height.equalTo(36) 88 + make.height.equalTo(self.addStandBtn.snp.height)
73 } 89 }
74 frontDescContentView.addSubview(self.enterpriseStandBtn) 90 frontDescContentView.addSubview(self.enterpriseStandBtn)
75 enterpriseStandBtn.snp.makeConstraints { make in 91 enterpriseStandBtn.snp.makeConstraints { make in
76 make.left.equalTo(self.personalStandBtn.snp.right) 92 make.left.equalTo(self.personalStandBtn.snp.right)
77 - make.bottom.equalToSuperview().offset(-45) 93 + make.bottom.equalTo(self.addStandBtn.snp.bottom)
78 make.width.equalTo(120) 94 make.width.equalTo(120)
79 - make.height.equalTo(36) 95 + make.height.equalTo(self.addStandBtn.snp.height)
80 } 96 }
81 97
82 frontDescContentView.addSubview(self.unStandBtnBgView) 98 frontDescContentView.addSubview(self.unStandBtnBgView)
83 unStandBtnBgView.snp.makeConstraints { make in 99 unStandBtnBgView.snp.makeConstraints { make in
84 make.left.equalToSuperview().offset(30) 100 make.left.equalToSuperview().offset(30)
85 - make.bottom.equalToSuperview().offset(-45) 101 + make.bottom.equalTo(self.addStandBtn.snp.bottom)
86 make.width.equalTo(self.width-60) 102 make.width.equalTo(self.width-60)
87 - make.height.equalTo(36) 103 + make.height.equalTo(self.addStandBtn.snp.height)
88 } 104 }
89 105
90 106
@@ -116,6 +132,27 @@ class CNFrontMainView : UIView{ @@ -116,6 +132,27 @@ class CNFrontMainView : UIView{
116 return textView 132 return textView
117 }() 133 }()
118 134
  135 + ///未认证-企业认证提示
  136 + lazy var enterpriseTipsLabel: UILabel = {
  137 + let enterpriseTipsLabel = UILabel.init(frame: CGRectMake(0, 0, 0, 0))
  138 + enterpriseTipsLabel.textColor = .white
  139 + enterpriseTipsLabel.textAlignment = .center
  140 + enterpriseTipsLabel.font = Font(9)
  141 + enterpriseTipsLabel.text = "企业认证适合企业、个体工商户申请"
  142 + enterpriseTipsLabel.adjustsFontSizeToFitWidth=true
  143 + return enterpriseTipsLabel
  144 + }()
  145 + ///未认证-机构认证提示
  146 + lazy var agencyTipsLabel: UILabel = {
  147 + let agencyTipsLabel = UILabel.init(frame: CGRectMake(0, 0, 0, 0))
  148 + agencyTipsLabel.textColor = .white
  149 + agencyTipsLabel.textAlignment = .center
  150 + agencyTipsLabel.font = Font(9)
  151 + agencyTipsLabel.text = "机构认证适合国家机构、社会组织、高校等申请"
  152 + agencyTipsLabel.adjustsFontSizeToFitWidth=true
  153 + return agencyTipsLabel
  154 + }()
  155 +
119 ///未认证-店铺认证 按钮(一个按钮时) 156 ///未认证-店铺认证 按钮(一个按钮时)
120 lazy var addStandBtn: UIButton = { 157 lazy var addStandBtn: UIButton = {
121 let addStandBtn = UIButton(type: .custom) 158 let addStandBtn = UIButton(type: .custom)
@@ -206,21 +243,21 @@ class CNFrontMainView : UIView{ @@ -206,21 +243,21 @@ class CNFrontMainView : UIView{
206 make.left.equalToSuperview() 243 make.left.equalToSuperview()
207 make.top.equalToSuperview() 244 make.top.equalToSuperview()
208 make.width.equalTo((self.width-60)/3) 245 make.width.equalTo((self.width-60)/3)
209 - make.height.equalTo(36) 246 + make.height.equalToSuperview()
210 } 247 }
211 unStandBtnBgView.addSubview(self.StandBtn2) 248 unStandBtnBgView.addSubview(self.StandBtn2)
212 StandBtn2.snp.makeConstraints { make in 249 StandBtn2.snp.makeConstraints { make in
213 make.centerX.equalToSuperview() 250 make.centerX.equalToSuperview()
214 make.top.equalToSuperview() 251 make.top.equalToSuperview()
215 make.width.equalTo(self.StandBtn1.snp.width) 252 make.width.equalTo(self.StandBtn1.snp.width)
216 - make.height.equalTo(36) 253 + make.height.equalToSuperview()
217 } 254 }
218 unStandBtnBgView.addSubview(self.StandBtn3) 255 unStandBtnBgView.addSubview(self.StandBtn3)
219 StandBtn3.snp.makeConstraints { make in 256 StandBtn3.snp.makeConstraints { make in
220 make.right.equalToSuperview() 257 make.right.equalToSuperview()
221 make.top.equalToSuperview() 258 make.top.equalToSuperview()
222 make.width.equalTo(self.StandBtn1.snp.width) 259 make.width.equalTo(self.StandBtn1.snp.width)
223 - make.height.equalTo(36) 260 + make.height.equalToSuperview()
224 } 261 }
225 262
226 unStandBtnBgView.addSubview(self.line1View) 263 unStandBtnBgView.addSubview(self.line1View)
@@ -268,16 +305,17 @@ class CNFrontMainView : UIView{ @@ -268,16 +305,17 @@ class CNFrontMainView : UIView{
268 lazy var upMoreGIF: UIImageView = { 305 lazy var upMoreGIF: UIImageView = {
269 let upMoreGIF = UIImageView() 306 let upMoreGIF = UIImageView()
270 upMoreGIF.frame = CGRect(x: self.width - 50, y: 0, width: 50, height: 30) 307 upMoreGIF.frame = CGRect(x: self.width - 50, y: 0, width: 50, height: 30)
  308 + upMoreGIF.contentMode = .scaleAspectFit
271 return upMoreGIF 309 return upMoreGIF
272 }() 310 }()
273 //下滑更多Gif 311 //下滑更多Gif
274 lazy var downMoreGIF: UIImageView = { 312 lazy var downMoreGIF: UIImageView = {
275 let downMoreGIF = UIImageView() 313 let downMoreGIF = UIImageView()
276 downMoreGIF.frame = CGRect(x: self.width - 50, y: 0, width: 96, height: 30) 314 downMoreGIF.frame = CGRect(x: self.width - 50, y: 0, width: 96, height: 30)
  315 + downMoreGIF.contentMode = .scaleAspectFit
277 return downMoreGIF 316 return downMoreGIF
278 }() 317 }()
279 318
280 - // MARK: - 已认证  
281 ///已认证-前置视图卡片容器 319 ///已认证-前置视图卡片容器
282 lazy var frontCardContentView : UIView = { 320 lazy var frontCardContentView : UIView = {
283 321
@@ -296,7 +334,7 @@ class CNFrontMainView : UIView{ @@ -296,7 +334,7 @@ class CNFrontMainView : UIView{
296 frontCardContentView.addSubview(self.iDCardView) 334 frontCardContentView.addSubview(self.iDCardView)
297 iDCardView.snp.makeConstraints { make in 335 iDCardView.snp.makeConstraints { make in
298 make.centerX.equalToSuperview() 336 make.centerX.equalToSuperview()
299 - make.bottom.equalToSuperview().offset(-(45-30)/2.0-30-10) 337 + make.bottom.equalToSuperview().offset(-62)
300 make.width.equalTo(262*KSreenWidth/375) 338 make.width.equalTo(262*KSreenWidth/375)
301 make.height.equalTo(0.52*262*KSreenWidth/375) 339 make.height.equalTo(0.52*262*KSreenWidth/375)
302 } 340 }
@@ -352,22 +390,11 @@ class CNFrontMainView : UIView{ @@ -352,22 +390,11 @@ class CNFrontMainView : UIView{
352 self.upMoreGIF.removeFromSuperview() 390 self.upMoreGIF.removeFromSuperview()
353 } 391 }
354 frontCardContentView.addSubview(self.upMoreGIF) 392 frontCardContentView.addSubview(self.upMoreGIF)
355 - upMoreGIF.snp.makeConstraints { make in  
356 - make.top.equalToSuperview().offset(5)  
357 - make.right.equalToSuperview().offset(-self.width/2+24)  
358 - make.width.equalTo(48)  
359 - make.height.equalTo(30)  
360 - }  
361 if frontCardContentView.contains(self.downMoreGIF){ 393 if frontCardContentView.contains(self.downMoreGIF){
362 self.downMoreGIF.removeFromSuperview() 394 self.downMoreGIF.removeFromSuperview()
363 } 395 }
364 frontCardContentView.addSubview(self.downMoreGIF) 396 frontCardContentView.addSubview(self.downMoreGIF)
365 - downMoreGIF.snp.makeConstraints { make in  
366 - make.top.equalTo(self.iDCardView.snp.bottom).offset((45-30)/2.0)  
367 - make.centerX.equalToSuperview()  
368 - make.width.equalTo(96)  
369 - make.height.equalTo(30)  
370 - } 397 + self.setUpMoreGIFAndDownMoreGIF()
371 //上滑 下滑引导gif 398 //上滑 下滑引导gif
372 upMoreGIF.kf.setImage(with: URL(string: newValue!.upGuideImg)) 399 upMoreGIF.kf.setImage(with: URL(string: newValue!.upGuideImg))
373 downMoreGIF.kf.setImage(with: URL(string: newValue!.downGuideImg)) 400 downMoreGIF.kf.setImage(with: URL(string: newValue!.downGuideImg))
@@ -477,6 +504,22 @@ class CNFrontMainView : UIView{ @@ -477,6 +504,22 @@ class CNFrontMainView : UIView{
477 self.enterpriseStandBtn.isHidden = true 504 self.enterpriseStandBtn.isHidden = true
478 self.unStandBtnBgView.isHidden = true 505 self.unStandBtnBgView.isHidden = true
479 } 506 }
  507 +
  508 + //有企业认证显示提示lbl
  509 + if idModel!.enterpriseAuth{
  510 + self.enterpriseTipsLabel.isHidden = false
  511 + self.enterpriseTipsLabel.textColor = HexColor(newValue!.backgroundColor)
  512 + }else{
  513 + self.enterpriseTipsLabel.isHidden = true
  514 + }
  515 + //有机构认证显示提示lbl
  516 + if idModel!.agencyAuth{
  517 + self.agencyTipsLabel.isHidden = false
  518 + self.agencyTipsLabel.textColor = HexColor(newValue!.backgroundColor)
  519 + }else{
  520 + self.agencyTipsLabel.isHidden = false
  521 + }
  522 +
480 } 523 }
481 524
482 self.addStandBtn.backgroundColor = HexColor(newValue!.backgroundColor) 525 self.addStandBtn.backgroundColor = HexColor(newValue!.backgroundColor)
@@ -488,22 +531,12 @@ class CNFrontMainView : UIView{ @@ -488,22 +531,12 @@ class CNFrontMainView : UIView{
488 self.upMoreGIF.removeFromSuperview() 531 self.upMoreGIF.removeFromSuperview()
489 } 532 }
490 frontDescContentView.addSubview(self.upMoreGIF) 533 frontDescContentView.addSubview(self.upMoreGIF)
491 - upMoreGIF.snp.makeConstraints { make in  
492 - make.top.equalToSuperview().offset(5)  
493 - make.right.equalToSuperview().offset(-self.width/2+24)  
494 - make.width.equalTo(48)  
495 - make.height.equalTo(30)  
496 - }  
497 if frontDescContentView.contains(self.downMoreGIF){ 534 if frontDescContentView.contains(self.downMoreGIF){
498 self.downMoreGIF.removeFromSuperview() 535 self.downMoreGIF.removeFromSuperview()
499 } 536 }
500 frontDescContentView.addSubview(self.downMoreGIF) 537 frontDescContentView.addSubview(self.downMoreGIF)
501 - downMoreGIF.snp.makeConstraints { make in  
502 - make.top.equalTo(self.personalStandBtn.snp.bottom).offset((45-30)/2.0)  
503 - make.centerX.equalTo(self.personalStandBtn.snp.right)  
504 - make.width.equalTo(96)  
505 - make.height.equalTo(30)  
506 - } 538 +
  539 + self.setUpMoreGIFAndDownMoreGIF()
507 //上滑 下滑引导gif 540 //上滑 下滑引导gif
508 upMoreGIF.kf.setImage(with: URL(string: newValue!.upGuideImg)) 541 upMoreGIF.kf.setImage(with: URL(string: newValue!.upGuideImg))
509 downMoreGIF.kf.setImage(with: URL(string: newValue!.downGuideImg)) 542 downMoreGIF.kf.setImage(with: URL(string: newValue!.downGuideImg))
@@ -516,6 +549,22 @@ class CNFrontMainView : UIView{ @@ -516,6 +549,22 @@ class CNFrontMainView : UIView{
516 } 549 }
517 } 550 }
518 551
  552 + func setUpMoreGIFAndDownMoreGIF(){
  553 + upMoreGIF.snp.makeConstraints { make in
  554 + make.top.equalToSuperview().offset(20)
  555 + make.centerX.equalToSuperview()
  556 + make.width.equalTo(96)
  557 + make.height.equalTo(30)
  558 + }
  559 + downMoreGIF.snp.makeConstraints { make in
  560 + make.bottom.equalToSuperview().offset(-19)
  561 + make.centerX.equalToSuperview()
  562 + make.width.equalTo(96)
  563 + make.height.equalTo(30)
  564 + }
  565 + }
  566 +
  567 +
519 let unStandBtnBgViewLayer = "unStandBtnBgViewLayer" 568 let unStandBtnBgViewLayer = "unStandBtnBgViewLayer"
520 func setUnStandBtnBgViewLayer(startHex:String,endHex:String){ 569 func setUnStandBtnBgViewLayer(startHex:String,endHex:String){
521 let payLayer = self.subLayer(name: unStandBtnBgViewLayer, viewLayer: self.unStandBtnBgView.layer) 570 let payLayer = self.subLayer(name: unStandBtnBgViewLayer, viewLayer: self.unStandBtnBgView.layer)
metaCode/Classes/Main/HomePages/View/HomepageDetail/CNLiveAlbumImageCell.swift
@@ -13,7 +13,6 @@ class CNLiveAlbumImageCell:UITableViewCell{ @@ -13,7 +13,6 @@ class CNLiveAlbumImageCell:UITableViewCell{
13 lazy var iconImgView :UIImageView = { 13 lazy var iconImgView :UIImageView = {
14 let iconImgView = UIImageView(frame: CGRect(x: (KSreenWidth - KSreenWidth*(KSreenWidth/DownSlideSingleCourseW))/2, y: 0, width: KSreenWidth*(KSreenWidth/DownSlideSingleCourseW), height: KSreenWidth*(KSreenWidth/DownSlideSingleCourseW))) 14 let iconImgView = UIImageView(frame: CGRect(x: (KSreenWidth - KSreenWidth*(KSreenWidth/DownSlideSingleCourseW))/2, y: 0, width: KSreenWidth*(KSreenWidth/DownSlideSingleCourseW), height: KSreenWidth*(KSreenWidth/DownSlideSingleCourseW)))
15 iconImgView.contentMode = .scaleAspectFill 15 iconImgView.contentMode = .scaleAspectFill
16 - iconImgView.clipsToBounds = true  
17 return iconImgView 16 return iconImgView
18 }() 17 }()
19 18
@@ -30,7 +29,7 @@ class CNLiveAlbumImageCell:UITableViewCell{ @@ -30,7 +29,7 @@ class CNLiveAlbumImageCell:UITableViewCell{
30 private func setupUI() { 29 private func setupUI() {
31 contentView.backgroundColor = HexColor(kCNDownSlideBackgroundColorHex) 30 contentView.backgroundColor = HexColor(kCNDownSlideBackgroundColorHex)
32 self.contentView.addSubview(self.iconImgView) 31 self.contentView.addSubview(self.iconImgView)
33 - 32 + self.contentView.clipsToBounds = true
34 } 33 }
35 34
36 35
metaCode/Classes/Main/HomePages/View/HomepageDetail/CNLiveDuanjuTitleCell.swift
@@ -18,10 +18,10 @@ class CNLiveDuanjuTitleCell:UITableViewCell{ @@ -18,10 +18,10 @@ class CNLiveDuanjuTitleCell:UITableViewCell{
18 18
19 if self.cellType == .course || self.cellType == .playletToCourse{ 19 if self.cellType == .course || self.cellType == .playletToCourse{
20 self.blockTitleLabl.text = _blockName ?? "全部课程" 20 self.blockTitleLabl.text = _blockName ?? "全部课程"
21 - self.blockTitleLabl.top = KStatusBarHeight+10 21 + self.blockTitleLabl.top = (allCourseCellHeight-30)/2
22 }else if self.cellType == .playlet{ 22 }else if self.cellType == .playlet{
23 self.blockTitleLabl.text = _blockName ?? "在追短剧" 23 self.blockTitleLabl.text = _blockName ?? "在追短剧"
24 - self.blockTitleLabl.top = 10 24 + self.blockTitleLabl.top = (45-30)/2
25 25
26 } 26 }
27 } 27 }
metaCode/Classes/Main/HomePages/View/PlayletHomePage/CNLivePlayletHomePageCell.swift
@@ -95,7 +95,7 @@ class CNLivePlayletHomePageCell:UITableViewCell{ @@ -95,7 +95,7 @@ class CNLivePlayletHomePageCell:UITableViewCell{
95 } 95 }
96 }else{ 96 }else{
97 //需要付费 97 //需要付费
98 - if model.product?.productType == "0"{ 98 + if model.product?.productType == "0" || model.product?.productType == "4"{
99 //免费 99 //免费
100 self.payIconImgView.isHidden = true 100 self.payIconImgView.isHidden = true
101 }else if model.product?.productType == "1"{ 101 }else if model.product?.productType == "1"{
metaCode/Classes/Main/HomePages/View/PlayletHomePage/CNLivePlayletHomePageHeaderCell.swift
@@ -242,7 +242,7 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{ @@ -242,7 +242,7 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
242 //需要付费 242 //需要付费
243 self.paymentBtn.isUserInteractionEnabled = true 243 self.paymentBtn.isUserInteractionEnabled = true
244 self.paymentChangeStatus(isPayed: false) 244 self.paymentChangeStatus(isPayed: false)
245 - if model.product?.albumProductType == "0"{ 245 + if model.product?.albumProductType == "0" || model.product?.albumProductType == "4"{
246 //免费 246 //免费
247 self.payIconImgView.isHidden = true 247 self.payIconImgView.isHidden = true
248 }else if model.product?.albumProductType == "1"{ 248 }else if model.product?.albumProductType == "1"{
metaCode/Supporting Files/Assets.xcassets/WebView/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "author" : "xcode",
  4 + "version" : 1
  5 + }
  6 +}
metaCode/Supporting Files/Assets.xcassets/WebView/web_more.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "web_more@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "web_more@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/WebView/web_more.imageset/web_more@2x.png 0 → 100644

450 Bytes

metaCode/Supporting Files/Assets.xcassets/WebView/web_more.imageset/web_more@3x.png 0 → 100644

931 Bytes