Commit dd03df68a44f5d212a2a50443e0a712dc90f360b

Authored by liushiyu
2 parents 4bfe3ea4 ecaa7464
Showing 25 changed files with 457 additions and 163 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 */; };
... ... @@ -355,6 +356,7 @@
355 356 1938BD422B4E34B200390A34 /* CNHomepageDuanJuDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNHomepageDuanJuDetailViewController.swift; sourceTree = "<group>"; };
356 357 1938BD442B4E49CA00390A34 /* CNLiveDuanjuTitleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDuanjuTitleCell.swift; sourceTree = "<group>"; };
357 358 1938BD462B4FD5A500390A34 /* CNLiveIntegralAlertTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveIntegralAlertTool.swift; sourceTree = "<group>"; };
  359 + 194455A02B6B3310006C5A2A /* CNWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNWebView.swift; sourceTree = "<group>"; };
358 360 19565EBF2AF4DE0E007D6727 /* CNLiveShopDetailBtnsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopDetailBtnsCell.swift; sourceTree = "<group>"; };
359 361 19565EC12AF616CA007D6727 /* CNLiveShopDetailOrderAssetCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopDetailOrderAssetCell.swift; sourceTree = "<group>"; };
360 362 19565EC42AF8AD1F007D6727 /* CNLiveShopProductManagerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopProductManagerController.swift; sourceTree = "<group>"; };
... ... @@ -738,6 +740,7 @@
738 740 isa = PBXGroup;
739 741 children = (
740 742 19123FC02ABC11170075C883 /* CNWebViewController.swift */,
  743 + 194455A02B6B3310006C5A2A /* CNWebView.swift */,
741 744 );
742 745 path = WebController;
743 746 sourceTree = "<group>";
... ... @@ -1808,6 +1811,7 @@
1808 1811 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */,
1809 1812 79282A442A2F1C1E00B5F8CF /* CNLiveLoginAuthView.swift in Sources */,
1810 1813 79BB96A62AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift in Sources */,
  1814 + 194455A12B6B3310006C5A2A /* CNWebView.swift in Sources */,
1811 1815 1938BD2C2B4801A700390A34 /* CNHomePageAnimationTransition.swift in Sources */,
1812 1816 191733452B284DCD007BCC04 /* CNLiveShopCouponListModel.swift in Sources */,
1813 1817 7C2703302A36CBE30061EC50 /* CNCertificationView.swift in Sources */,
... ... @@ -2074,7 +2078,7 @@
2074 2078 CODE_SIGN_ENTITLEMENTS = metaCode/metaCode.entitlements;
2075 2079 CODE_SIGN_IDENTITY = "Apple Development";
2076 2080 CODE_SIGN_STYLE = Automatic;
2077   - CURRENT_PROJECT_VERSION = 1.0.5.24.01.30.17;
  2081 + CURRENT_PROJECT_VERSION = 1.0.6.24.02.04.18;
2078 2082 DEVELOPMENT_TEAM = 94X49GG3ZW;
2079 2083 ENABLE_BITCODE = NO;
2080 2084 ENABLE_MODULE_VERIFIER = NO;
... ... @@ -2128,7 +2132,7 @@
2128 2132 );
2129 2133 GENERATE_INFOPLIST_FILE = YES;
2130 2134 INFOPLIST_FILE = metaCode/Info.plist;
2131   - INFOPLIST_KEY_CFBundleDisplayName = "元码";
  2135 + INFOPLIST_KEY_CFBundleDisplayName = "中国网元码";
2132 2136 INFOPLIST_KEY_NSCameraUsageDescription = "需要允许开启相机才能使用上传头像、意见反馈、资质审核等功能";
2133 2137 INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "需要允许使用您的位置信息才能获取您所在城市";
2134 2138 INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "需要允许使用您的位置信息才能获取您所在城市";
... ... @@ -2146,7 +2150,7 @@
2146 2150 "$(inherited)",
2147 2151 "@executable_path/Frameworks",
2148 2152 );
2149   - MARKETING_VERSION = 1.0.5;
  2153 + MARKETING_VERSION = 1.0.6;
2150 2154 OTHER_LDFLAGS = (
2151 2155 "$(inherited)",
2152 2156 "-all_load",
... ... @@ -2328,7 +2332,7 @@
2328 2332 CODE_SIGN_ENTITLEMENTS = metaCode/metaCode.entitlements;
2329 2333 CODE_SIGN_IDENTITY = "Apple Development";
2330 2334 CODE_SIGN_STYLE = Automatic;
2331   - CURRENT_PROJECT_VERSION = 1.0.5.24.01.30.17;
  2335 + CURRENT_PROJECT_VERSION = 1.0.6.24.02.04.18;
2332 2336 DEVELOPMENT_TEAM = 94X49GG3ZW;
2333 2337 ENABLE_BITCODE = NO;
2334 2338 ENABLE_MODULE_VERIFIER = NO;
... ... @@ -2382,7 +2386,7 @@
2382 2386 );
2383 2387 GENERATE_INFOPLIST_FILE = YES;
2384 2388 INFOPLIST_FILE = metaCode/Info.plist;
2385   - INFOPLIST_KEY_CFBundleDisplayName = "元码";
  2389 + INFOPLIST_KEY_CFBundleDisplayName = "中国网元码";
2386 2390 INFOPLIST_KEY_NSCameraUsageDescription = "需要允许开启相机才能使用上传头像、意见反馈、资质审核等功能";
2387 2391 INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "需要允许使用您的位置信息才能获取您所在城市";
2388 2392 INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "需要允许使用您的位置信息才能获取您所在城市";
... ... @@ -2400,7 +2404,7 @@
2400 2404 "$(inherited)",
2401 2405 "@executable_path/Frameworks",
2402 2406 );
2403   - MARKETING_VERSION = 1.0.5;
  2407 + MARKETING_VERSION = 1.0.6;
2404 2408 OTHER_LDFLAGS = (
2405 2409 "$(inherited)",
2406 2410 "-all_load",
... ...
metaCode/Classes/Common/Util/CNLiveIntegralAlertTool.swift
... ... @@ -27,6 +27,8 @@ enum CNLiveIntegralPayStatus {
27 27 }
28 28 typealias integralStatusChangeBlock = (_ integralPayStatus:CNLiveIntegralPayStatus) -> Void
29 29  
  30 +let integralAlertToolTag = 10000
  31 +
30 32 class CNLiveIntegralAlertTool:NSObject{
31 33 static let shared = CNLiveIntegralAlertTool()
32 34  
... ... @@ -61,7 +63,7 @@ class CNLiveIntegralAlertTool:NSObject{
61 63 bottomBgView.backgroundColor = HexColor("#FFFFFF")
62 64 bottomBgView.layer.cornerRadius = 9
63 65 bottomBgView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
64   - bottomBgView.tag = 10000
  66 + bottomBgView.tag = integralAlertToolTag
65 67 return bottomBgView
66 68 }()
67 69  
... ... @@ -181,7 +183,7 @@ class CNLiveIntegralAlertTool:NSObject{
181 183 //隐藏积分购买弹窗
182 184 func hiddenIntegralAlert(){
183 185 delegate.window?.subviews.forEach({ view in
184   - if view.tag == 10000{
  186 + if view.tag == integralAlertToolTag{
185 187 UIView.animate(withDuration: 0.25) {
186 188 view.removeFromSuperview()
187 189 self.bgBtnView.removeFromSuperview()
... ...
metaCode/Classes/Config/CNLiveConfigManager.swift
... ... @@ -91,4 +91,8 @@ extension Notification.Name {
91 91 //销毁播放器通知
92 92 public static let kPlayerDestroyNotification = Notification.Name("kPlayerDestroyNotification")
93 93 }
  94 + struct AuthVNumPageManage {
  95 + //认证页垂直方向是哪个页面的通知 1上面页 2中间页 3下面页
  96 + public static let kAuthVNumPageChangedNotification = Notification.Name("kAuthVNumPageChangedNotification")
  97 + }
94 98 }
... ...
metaCode/Classes/Main/HomePage/Controller/AuthMainController/CNMetaCodeHomePageController.swift
... ... @@ -223,11 +223,22 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
223 223 //我的身份排序后刷新
224 224 NotificationCenter.default.addObserver(self, selector: #selector(StandAuthNotificationSuccessAction), name: Notification.Name.StandAuth.StandAuthSortNotificationResult, object: nil)
225 225  
  226 + //认证页垂直方向是哪个页面的通知
  227 + NotificationCenter.default.addObserver(self, selector: #selector(kAuthVNumPageChangedNotificationAction), name: Notification.Name.AuthVNumPageManage.kAuthVNumPageChangedNotification, object: nil)
  228 +
226 229 // self.tabBarController?.tabBar.top = self.tabBarY + KSreenHeight
227 230  
228 231 }
229 232 override func viewWillAppear(_ animated: Bool) {
230 233 super.viewWillAppear(animated)
  234 +// print("uid = ",UserInfoManager.shared.userInfo.uid)
  235 +
  236 + }
  237 + override func viewDidAppear(_ animated: Bool) {
  238 + super.viewDidAppear(animated)
  239 + self.view.height = KSreenHeight
  240 + self.topNavView.isHidden = true
  241 +
231 242 switch vNumPage {
232 243 case .VNumPageMain://中间主页
233 244 self.tabBarController?.tabBar.isHidden = false
... ... @@ -236,16 +247,6 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
236 247 case .VNumPageDown://下滑页
237 248 self.tabBarController?.tabBar.isHidden = true
238 249 }
239   -
240   -
241   - print("uid = ",UserInfoManager.shared.userInfo.uid)
242   -
243   - }
244   - override func viewDidAppear(_ animated: Bool) {
245   - super.viewDidAppear(animated)
246   - self.view.height = KSreenHeight
247   -
248   - self.topNavView.isHidden = true
249 250 }
250 251  
251 252 deinit {
... ... @@ -309,6 +310,18 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
309 310 self.getApplyShopInfo()
310 311 print("DSShopDarenAuthResultNotificationAction")
311 312 }
  313 + // MARK: - 刷新当前垂直是哪个页面
  314 + @objc func kAuthVNumPageChangedNotificationAction(noti:Notification){
  315 + let dict = (noti.userInfo ?? ["":""]) as! [String :Any]
  316 + let num = dict["AuthVNumPage"] as! Int
  317 + if num == 1{
  318 + self.vNumPage = .VNumPageDown
  319 + }else if num == 2{
  320 + self.vNumPage = .VNumPageMain
  321 + }else if num == 3{
  322 + self.vNumPage = .VNumPageUp
  323 + }
  324 + }
312 325  
313 326  
314 327  
... ... @@ -418,8 +431,6 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
418 431 bannerView?.superScrollView = flowView.scrollView
419 432 bannerView?.associatedVCView = self.view
420 433 bannerView?.delegate = self
421   - bannerView?.upSlideView.webView.navigationDelegate = self
422   - bannerView?.downSlideView.webView.navigationDelegate = self
423 434 return bannerView
424 435 }
425 436  
... ... @@ -523,10 +534,13 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
523 534 //慢拖动时处理
524 535 if scrollView.contentOffset.y > 0 && scrollView.contentOffset.y < KSreenHeight/2{
525 536 scrollView.setContentOffset(CGPoint(x: scrollView.contentOffset.x, y: 0), animated: true)
  537 + self.vNumPage = .VNumPageDown
526 538 }else if scrollView.contentOffset.y >= KSreenHeight/2 && scrollView.contentOffset.y < KSreenHeight+KSreenHeight/2{
527 539 scrollView.setContentOffset(CGPoint(x: scrollView.contentOffset.x, y: KSreenHeight), animated: true)
  540 + self.vNumPage = .VNumPageMain
528 541 }else if scrollView.contentOffset.y >= KSreenHeight+KSreenHeight/2 && scrollView.contentOffset.y < KSreenHeight*2+KSreenHeight/2{
529 542 scrollView.setContentOffset(CGPoint(x: scrollView.contentOffset.x, y: KSreenHeight*2), animated: true)
  543 + self.vNumPage = .VNumPageUp
530 544 }else{
531 545  
532 546 }
... ... @@ -537,7 +551,7 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
537 551 }
538 552 func customIndexViewDidEndScroll(scrollView: UIScrollView) {
539 553 print("EndScroll\(scrollView.contentOffset.y)")
540   -
  554 +
541 555 if scrollView.contentOffset.y == 0{//下滑页
542 556 self.tabBarController?.tabBar.isHidden = true
543 557 vNumPage = .VNumPageDown
... ... @@ -564,64 +578,7 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
564 578 }
565 579 }
566 580 }
567   -
568   - // MARK: - WKWebViewDelegate
569   - // 页面开始加载时调用
570   - func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
571   - print("didStartProvisionalNavigation")
572   - }
573   - // 当内容开始返回时调用
574   - func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
575   - print("didCommit")
576   - }
577   - // 页面加载完成之后调用
578   - func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
579   - print("didFinish")
580   - }
581   - // 页面加载失败时调用
582   - func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
583   - print("didFailProvisionalNavigation")
584   - }
585   - // 接收到服务器跳转请求之后调用
586   - func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
587   - print("didReceiveServerRedirectForProvisionalNavigation")
588   - }
589   - // 在收到响应后,决定是否跳转 -> 默认允许
590   - func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
591   - print("decidePolicyFor")
592   - //允许跳转
593   - decisionHandler(.allow)
594   - //不允许跳转
595   -// decisionHandler(.cancel)
596   - }
597   - // 在发送请求之前,决定是否跳转 -> 默认允许
598   - @available(iOS 13.0, *)
599   - func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) {
600   - print("decidePolicyFor")
601   - let url:String = navigationAction.request.url!.absoluteString
602   - print("navigationAction:\(navigationAction.navigationType.rawValue)")
603   - print(url)
604   - if(navigationAction.navigationType == .linkActivated){
605   - let webVC = CNWebViewController()
606   - webVC.url = URL(string: url)
607   - navigationViewController().pushViewController(webVC, animated: pushAnimated)
608   -// currentViewController()?.navigationController?.pushViewController(webVC, animated: pushAnimated)
609   - decisionHandler(.cancel, preferences)
610   - return
611   - }else if(navigationAction.navigationType == .other){
612   - if(url.contains("wjjh5.cnlive.com")){
613   -
614   - decisionHandler(.allow, preferences)
615   - return
616   - }else
617   - {
618   - decisionHandler(.cancel, preferences)
619   - return
620   - }
621   - }
622   - decisionHandler(.allow, preferences)
623   - }
624   -
  581 +
625 582 //MARK: - 网络请求获取身份列表
626 583 func getUserIdentityApi()
627 584 {
... ...
metaCode/Classes/Main/HomePage/Controller/DownSlideController/CNUpSlideDetailViewController.swift
... ... @@ -100,7 +100,7 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
100 100 self.view.layer.masksToBounds = true
101 101 self.view.backgroundColor = .white
102 102 self.view.addSubview(self.tableView)
103   - self.tableView.frame = CGRect(x: 0, y: KStatusBarHeight, width: KSreenWidth, height: KSreenHeight-KStatusBarHeight)
  103 + self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight)
104 104 view.addSubview(closeBtn)
105 105 view.addGestureRecognizer(dismissPanGesture)
106 106 }
... ... @@ -217,6 +217,7 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
217 217 return cell
218 218 }
219 219 cell.iconImgView.image = self.cell.bgImageView.image
  220 + cell.titleLabel.text = self.cell.slideModel?.contents[0].title ?? ""
220 221 return cell
221 222 }else if self.cellType == .course || self.cellType == .playletToCourse{
222 223  
... ... @@ -239,6 +240,7 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
239 240 return cell
240 241 }
241 242 cell.iconImgView.image = self.cell.bgImageView.image
  243 + cell.titleLabel.text = self.cell.slideModel?.contents[0].title ?? ""
242 244 return cell
243 245  
244 246 }
... ... @@ -269,10 +271,10 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
269 271 }else if self.cellType == .course || self.cellType == .playletToCourse{
270 272 if self.slideModel?.type == SlideModelTypeAllCourse12{
271 273 //全部课程
272   - return allCourseCellHeight
  274 + return allCourseCellHeight+get_system_statusBar_height()
273 275 }else if self.slideModel?.type == SlideModelTypeOneCourse75{
274 276 //大图课程
275   - return KSreenWidth*(KSreenWidth/DownSlideSingleCourseW)
  277 + return KSreenWidth
276 278 }
277 279 }
278 280 }else{
... ... @@ -281,6 +283,37 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
281 283 return 75
282 284 }
283 285  
  286 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  287 + let albumModel = self.dataArray[indexPath.row] as! CNLiveAlbumModel
  288 + if indexPath.section == 0{
  289 + if self.cellType == .playlet{
  290 + //短剧大图,跳转播放页
  291 + navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: albumModel.contentId), animated: pushAnimated)
  292 + }else if self.cellType == .course || self.cellType == .playletToCourse{
  293 + if self.slideModel?.type == SlideModelTypeAllCourse12{
  294 + //全部课程,跳转h5
  295 +
  296 + }else if self.slideModel?.type == SlideModelTypeOneCourse75{
  297 + //大图课程,跳转h5
  298 + CNLiveDownSlideTool.pushWebVCWithCNLiveAlbumMdl(albumModel: albumModel,controller: self)
  299 + }
  300 + }
  301 + }else{
  302 + //视频跳转播放页;课程跳转h5
  303 + if albumModel.model == kCNDownSlideContentsModelModelAlbum_ugc{
  304 + //视频
  305 + //短剧-跳转短剧播放页
  306 + navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: albumModel.contentId), animated: pushAnimated)
  307 +
  308 + }else if albumModel.model == "1" || albumModel.model == "2" || albumModel.model == "3" || albumModel.model == "4"{
  309 + //课程
  310 + CNLiveDownSlideTool.pushWebVCWithCNLiveAlbumMdl(albumModel: albumModel,controller: self)
  311 + }else{
  312 +
  313 + }
  314 + }
  315 + }
  316 +
284 317 // MARK: - 在追短剧--获取全部专辑列表
285 318 func getBlockContents(page:NSInteger){
286 319 showLoading(message: "")
... ...
metaCode/Classes/Main/HomePage/Controller/DownSlideController/CNUpSlideViewController.swift
... ... @@ -165,7 +165,7 @@ class CNUpSlideViewController: CNLiveBaseViewController,UITableViewDelegate,UITa
165 165 ///(3)“album”,“album_video”,“album_ugc” -> http://wjjh5.cnlive.com/cnYmAlbumVideoList.html?aid=contentId&title=titlle
166 166 if slideModel.contents.first?.model ?? "0" == "1" || slideModel.contents.first?.model ?? "0" == "2" || slideModel.contents.first?.model ?? "0" == "3" || slideModel.contents.first?.model ?? "0" == "4"{
167 167 cellType = .course
168   - }else if slideModel.contents.first?.model ?? "0" == "album_ugc"{
  168 + }else if slideModel.contents.first?.model ?? "0" == kCNDownSlideContentsModelModelAlbum_ugc{
169 169 cellType = .playlet
170 170 }else{
171 171 //新类型
... ...
metaCode/Classes/Main/HomePage/Controller/ShopDownDetail/CNLiveDownShopDetailController.swift
... ... @@ -26,6 +26,10 @@ class CNLiveDownShopDetailController:CNLiveBaseViewController, UICollectionViewD
26 26 let upSlideView = self.view.superview as! CNUpSlideView
27 27 let scrollView = upSlideView.superview as! UIScrollView
28 28 scrollView.setContentOffset(CGPoint(x: 0, y: scrollView.height), animated: true)
  29 +
  30 + let result:Dictionary = ["AuthVNumPage":2]
  31 + NotificationCenter.default.post(name: Notification.Name.AuthVNumPageManage.kAuthVNumPageChangedNotification, object: nil, userInfo: result)
  32 +
29 33 currentViewController()?.tabBarController?.tabBar.isHidden = false
30 34  
31 35 let metaVC = currentViewController() as! CNMetaCodeHomePageController
... ... @@ -91,6 +95,9 @@ class CNLiveDownShopDetailController:CNLiveBaseViewController, UICollectionViewD
91 95 scrollView.setContentOffset(CGPoint(x: 0, y: scrollView.height), animated: true)
92 96 currentViewController()?.tabBarController?.tabBar.isHidden = false
93 97  
  98 + let result:Dictionary = ["AuthVNumPage":2]
  99 + NotificationCenter.default.post(name: Notification.Name.AuthVNumPageManage.kAuthVNumPageChangedNotification, object: nil, userInfo: result)
  100 +
94 101 let metaVC = currentViewController() as! CNMetaCodeHomePageController
95 102 let index = metaVC.pageFlowView.currentPageIndex
96 103 let customIndexView = metaVC.pageFlowView.viewWithTag(100+index) as! CNCustomIndexView
... ...
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  
... ... @@ -192,6 +192,9 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange
192 192 collectionView.backAction = {[weak self] in
193 193 self?.baseScrollView.setContentOffset(CGPoint(x: 0, y: (self!.baseScrollView.height)), animated: true)
194 194 currentViewController()?.tabBarController?.tabBar.isHidden = false
  195 + let vc = currentViewController() as! CNMetaCodeHomePageController
  196 + vc.vNumPage = .VNumPageMain
  197 +
195 198 self?.superScrollView?.isScrollEnabled = true
196 199  
197 200 let time = DispatchTime.now() + 0.5
... ... @@ -236,6 +239,8 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange
236 239 self!.baseScrollView.setContentOffset(CGPoint(x: 0, y: self!.baseScrollView.height), animated: true)
237 240 self?.superScrollView?.isScrollEnabled = true
238 241 currentViewController()?.tabBarController?.tabBar.isHidden = false
  242 + let vc = currentViewController() as! CNMetaCodeHomePageController
  243 + vc.vNumPage = .VNumPageMain
239 244 }
240 245 return topNavView
241 246 }()
... ... @@ -311,8 +316,37 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange
311 316 /**隐藏左右view*/
312 317 let fabsOffset: CGFloat = abs(defaultOffset - currentOffset)
313 318  
314   - let leftView:UIView? = self.superScrollView?.viewWithTag(tag-1)
315   - let rightView:UIView? = self.superScrollView?.viewWithTag(tag+1)
  319 + var leftView:CNCustomIndexView? = self.superScrollView?.viewWithTag(tag-1) as? CNCustomIndexView
  320 + var rightView:CNCustomIndexView? = self.superScrollView?.viewWithTag(tag+1) as? CNCustomIndexView
  321 + if leftView == nil{
  322 + if let haveSub = self.superScrollView?.subviews.filter({ tempLeftView in
  323 + if tempLeftView is CNCustomIndexView && tempLeftView.tag == tag-1{
  324 + leftView = (tempLeftView as! CNCustomIndexView)
  325 + return true
  326 + }else{
  327 + return false
  328 + }
  329 + }){
  330 +// print("leftView\(leftView)")
  331 + }else{
  332 +
  333 + }
  334 + }
  335 + if rightView == nil{
  336 + if let haveSub = self.superScrollView?.subviews.filter({ tempRightView in
  337 + if tempRightView is CNCustomIndexView && tempRightView.tag == tag+1{
  338 + rightView = (tempRightView as! CNCustomIndexView)
  339 + return true
  340 + }else{
  341 + return false
  342 + }
  343 + }){
  344 +// print("rightView\(rightView)")
  345 + }else{
  346 +
  347 + }
  348 + }
  349 +
316 350 if fabsOffset > 70 {
317 351 leftView?.alpha = 0
318 352 rightView?.alpha = 0
... ...
metaCode/Classes/Main/HomePage/View/VerticalViews/DownSlide/CNDownSlideSingleCourseCell.swift
... ... @@ -3,7 +3,7 @@
3 3 // metaCode
4 4 //
5 5 // Created by zx on 2023/10/16.
6   -// 单课程大图专辑
  6 +// 单课程大图专辑 | 全部课程列表
7 7  
8 8  
9 9 import Foundation
... ... @@ -128,6 +128,9 @@ class CNDownSlideSingleCourseCell: UITableViewCell {
128 128 //小icon
129 129 let imageView = UIImageView(frame: CGRectMake(DownSlideRecommendLeftGap, titleLbl.bottom+DownSlideRecommendLeftGap+CGFloat(i)*(DownSlideAllCourseRowTopYGap+DownSlideAllCourseRowImageWH+DownSlideAllCourseRowBottomYGap), CGFloat(DownSlideAllCourseRowImageWH), CGFloat(DownSlideAllCourseRowImageWH)))
130 130 imageView.kf.setImage(with: URL(string:contentMdl.poster!))
  131 + imageView.layer.cornerRadius = 12
  132 + imageView.clipsToBounds = true
  133 + imageView.contentMode = .scaleAspectFill
131 134 bgBackView.addSubview(imageView)
132 135  
133 136 let titleLbl = UILabel(frame: CGRect(x: imageView.right+DownSlideRecommendLeftGap, y: imageView.top, width: DownSlideSingleCourseW-90-imageView.right, height: 21))
... ... @@ -137,7 +140,7 @@ class CNDownSlideSingleCourseCell: UITableViewCell {
137 140 bgBackView.addSubview(titleLbl)
138 141  
139 142 let subTitleLbl = UILabel(frame: CGRect(x: titleLbl.left, y:titleLbl.bottom+3 , width: titleLbl.width, height: 17))
140   - subTitleLbl.text = contentMdl.subTitle ?? ""
  143 + subTitleLbl.text = contentMdl.subTitle ?? ""
141 144 subTitleLbl.font = Font_12
142 145 subTitleLbl.textColor = HexColor("#999999")
143 146 bgBackView.addSubview(subTitleLbl)
... ... @@ -202,7 +205,7 @@ class CNDownSlideSingleCourseCell: UITableViewCell {
202 205  
203 206 let moreLabel = UILabel(frame: CGRect(x: DownSlideRecommendLeftGap, y: 15, width: DownSlideSingleCourseW - 50 - DownSlideRecommendLeftGap , height: 30))
204 207 moreLabel.text = model.blockName ?? "更多"
205   - moreLabel.font = Font_15
  208 + moreLabel.font = BoldFont_15_Fit
206 209 moreLabel.textColor = HexColor("#333333")
207 210 singleCourseBottomView.addSubview(moreLabel)
208 211  
... ...
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/MainView/CNMainView.swift
... ... @@ -140,6 +140,7 @@ class CNFrontMainView : UIView{
140 140 enterpriseTipsLabel.font = Font(9)
141 141 enterpriseTipsLabel.text = "企业认证适合企业、个体工商户申请"
142 142 enterpriseTipsLabel.adjustsFontSizeToFitWidth=true
  143 + enterpriseTipsLabel.isHidden = true
143 144 return enterpriseTipsLabel
144 145 }()
145 146 ///未认证-机构认证提示
... ... @@ -150,6 +151,7 @@ class CNFrontMainView : UIView{
150 151 agencyTipsLabel.font = Font(9)
151 152 agencyTipsLabel.text = "机构认证适合国家机构、社会组织、高校等申请"
152 153 agencyTipsLabel.adjustsFontSizeToFitWidth=true
  154 + agencyTipsLabel.isHidden = true
153 155 return agencyTipsLabel
154 156 }()
155 157  
... ... @@ -414,6 +416,8 @@ class CNFrontMainView : UIView{
414 416 if idModel?.id == 9{
415 417 //电商
416 418 //隐藏上滑下滑gif
  419 + self.agencyTipsLabel.isHidden = true
  420 + self.enterpriseTipsLabel.isHidden = true
417 421 upMoreGIF.isHidden = true
418 422 downMoreGIF.isHidden = true
419 423 self.addStandBtn.isHidden = false
... ... @@ -691,6 +695,10 @@ class CNFrontMainView : UIView{
691 695 let customIndexView = ((self.superview as! CNMainView).superview as! UIScrollView).superview as! CNCustomIndexView
692 696 let baseScrollView = customIndexView.baseScrollView
693 697 baseScrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
  698 +
  699 + let result:Dictionary = ["AuthVNumPage":1]
  700 + NotificationCenter.default.post(name: Notification.Name.AuthVNumPageManage.kAuthVNumPageChangedNotification, object: nil, userInfo: result)
  701 +
694 702 currentViewController()?.tabBarController?.tabBar.isHidden = false
695 703 customIndexView.superScrollView?.isScrollEnabled = true
696 704  
... ... @@ -703,7 +711,11 @@ class CNFrontMainView : UIView{
703 711 }else if self.standInfoSubTitleModel?.jumpType == UpDownTypeAuthAlertDown{
704 712 let customIndexView = ((self.superview as! CNMainView).superview as! UIScrollView).superview as! CNCustomIndexView
705 713 let baseScrollView = customIndexView.baseScrollView
706   - baseScrollView.setContentOffset(CGPoint(x: 0, y: (baseScrollView.height*2+KNavigationHeight)), animated: true)
  714 + baseScrollView.setContentOffset(CGPoint(x: 0, y: (baseScrollView.height*2)), animated: true)
  715 +
  716 + let result:Dictionary = ["AuthVNumPage":3]
  717 + NotificationCenter.default.post(name: Notification.Name.AuthVNumPageManage.kAuthVNumPageChangedNotification, object: nil, userInfo: result)
  718 +
707 719 currentViewController()?.tabBarController?.tabBar.isHidden = false
708 720 customIndexView.superScrollView?.isScrollEnabled = true
709 721  
... ...
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  
... ...
metaCode/Classes/Main/HomePages/Controller/AuthController/CNLiveAuthViewController.swift
... ... @@ -9,7 +9,7 @@ import Foundation
9 9 import MJRefresh
10 10 class CNLiveAuthViewController:CNLiveBaseViewController,UITableViewDelegate,UITableViewDataSource{
11 11  
12   - //下滑tableview背景颜色
  12 + //下滑tableview背景颜色 浅灰色
13 13 let kCNDownSlideBackgroundColorHex: String = "#F7F8FA"
14 14  
15 15 ///CNliveDownSlideModel Type
... ... @@ -62,7 +62,7 @@ class CNLiveAuthViewController:CNLiveBaseViewController,UITableViewDelegate,UITa
62 62 }
63 63 override func viewDidLoad() {
64 64 super.viewDidLoad()
65   - self.view.backgroundColor = .white
  65 + self.view.backgroundColor = HexColor(kCNDownSlideBackgroundColorHex)
66 66 view.addSubview(tableView)
67 67 tableView.frame = CGRect(x: 0, y: KStatusBarHeight, width: KSreenWidth, height: KSreenHeight-DownSlideBottomViewHeight-KStatusBarHeight)
68 68 self.addRefreshView()
... ... @@ -221,7 +221,7 @@ class CNLiveAuthViewController:CNLiveBaseViewController,UITableViewDelegate,UITa
221 221 ///(3)“album”,“album_video”,“album_ugc” -> http://wjjh5.cnlive.com/cnYmAlbumVideoList.html?aid=contentId&title=titlle
222 222 if slideModel.contents.first?.model ?? "0" == "1" || slideModel.contents.first?.model ?? "0" == "2" || slideModel.contents.first?.model ?? "0" == "3" || slideModel.contents.first?.model ?? "0" == "4"{
223 223 cellType = .playletToCourse
224   - }else if slideModel.contents.first?.model ?? "0" == "album_ugc"{
  224 + }else if slideModel.contents.first?.model ?? "0" == kCNDownSlideContentsModelModelAlbum_ugc{
225 225 cellType = .playlet
226 226 }else{
227 227 //新类型
... ...
metaCode/Classes/Main/HomePages/Controller/AuthController/push相关/CNHomePageAnimationTransition.swift
... ... @@ -69,12 +69,12 @@ extension CNHomePageAnimationTransition: UIViewControllerAnimatedTransitioning {
69 69 if fromNaviVC.topViewController is CNHomepageDuanJuDetailViewController{
70 70 guard let selectedCell = toVC.selectedDuanjuCell else { return }
71 71 let fromVC = fromNaviVC.topViewController as! CNHomepageDuanJuDetailViewController
72   - UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
  72 + UIView.animate(withDuration: transitonDuration - 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
73 73 let frame = selectedCell.convert(selectedCell.totalView.frame, to: toVC.view)
74 74 fromVC.view.frame = frame
75 75 fromVC.view.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius
76 76 fromVC.closeBtn.alpha = 0
77   -
  77 + fromVC.tableView.alpha = 0
78 78 }) { (completed) in
79 79 transitionContext.completeTransition(completed)
80 80 }
... ...
metaCode/Classes/Main/HomePages/Controller/AuthController/push相关/CNHomepageDuanJuDetailViewController.swift
... ... @@ -137,6 +137,14 @@ class CNHomepageDuanJuDetailViewController: CNLiveBaseViewController ,UITableVi
137 137 return cell
138 138 }
139 139 }
  140 +
  141 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  142 + let albumModel = self.dataArray[indexPath.row] as! CNLiveAlbumMsgModel
  143 + //短剧-跳转短剧播放页
  144 + navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: albumModel.albumId), animated: pushAnimated)
  145 +
  146 + }
  147 +
140 148 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
141 149 if indexPath.section == 0{
142 150 return 45//10+30+5
... ...
metaCode/Classes/Main/HomePages/Controller/PlayletHomePage/CNLivePlayletHomePageController.swift
... ... @@ -167,7 +167,7 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS
167 167 }
168 168 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
169 169 if indexPath.section == 0{
170   - return 15+147+20+self.jianjieLblHeight+25+39+23.5+15.5
  170 + return 15+147+20+self.jianjieLblHeight+25+39+23.5+15.5+18.5
171 171 }else{
172 172 return 75+12*2
173 173 }
... ...
metaCode/Classes/Main/HomePages/Model/CNLiveAlbumModel.swift
... ... @@ -36,7 +36,7 @@ class CNLiveAlbumModel:BaseModel{
36 36 var contentId = ""
37 37 var pid = ""
38 38 var tag = ""
39   - var model = ""
  39 + var model = ""//1,2,3,4课程 album_ugc短剧
40 40 var thirdUrl = ""
41 41 var publishTime = ""
42 42 var shareUrl = ""
... ...
metaCode/Classes/Main/HomePages/View/HomepageDetail/CNLiveAlbumCell.swift
... ... @@ -47,6 +47,7 @@ class CNLiveAlbumCell:UITableViewCell{
47 47 let iconImgView = UIImageView(frame: CGRect(x: 15, y: 15, width: 45, height: 45))
48 48 iconImgView.layer.cornerRadius = 5
49 49 iconImgView.clipsToBounds = true
  50 + iconImgView.contentMode = .scaleAspectFill
50 51 return iconImgView
51 52 }()
52 53 ///标题
... ... @@ -60,13 +61,14 @@ class CNLiveAlbumCell:UITableViewCell{
60 61 }()
61 62 ///副标题
62 63 lazy var subTitleLabel: UILabel = {
63   - let titleLabel = UILabel.init(frame: CGRectMake(self.iconImgView.right+15, self.titleLabl.bottom+5, 60, 17))
  64 + let titleLabel = UILabel.init(frame: CGRectMake(self.iconImgView.right+15, self.titleLabl.bottom+5, self.titleLabl.width, 17))
64 65 titleLabel.textColor = HexColor("#999999")
65 66 titleLabel.textAlignment = .left
66 67 titleLabel.font = Font_12
67 68 titleLabel.text = "共68集"
68 69 return titleLabel
69 70 }()
  71 + let playBtnSubLayer = "playBtnSubLayer"
70 72 lazy var playBtn: QMUIButton = {
71 73 let playBtn = QMUIButton.init(type: .custom)
72 74 playBtn.frame = CGRect(x: KSreenWidth-80, y: 0, width: 65, height: 26)
... ... @@ -75,9 +77,17 @@ class CNLiveAlbumCell:UITableViewCell{
75 77 playBtn.clipsToBounds = true
76 78 playBtn.setTitle("播放", for: .normal)
77 79 playBtn.setTitleColor(HexColor("#FFFFFF"), for: .normal)
78   - playBtn.backgroundColor = HexColor("#609AFF")
79 80 playBtn.titleLabel?.font = Font_13
80 81 playBtn.addTarget(self, action: #selector(playBtnAction), for: .touchUpInside)
  82 +
  83 + let gradient = CAGradientLayer()
  84 + gradient.frame = playBtn.bounds
  85 + gradient.colors = [HexColor("#67C5FF")!.cgColor, HexColor("#609AFF")!.cgColor]
  86 + gradient.locations = [0, 1]
  87 + gradient.startPoint = CGPoint(x: 0, y: 0.5)
  88 + gradient.endPoint = CGPoint(x: 0.5, y: 0.5)
  89 + gradient.name = playBtnSubLayer
  90 + playBtn.layer.insertSublayer(gradient, at: 0)
81 91 return playBtn
82 92 }()
83 93 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
... ... @@ -97,7 +107,7 @@ class CNLiveAlbumCell:UITableViewCell{
97 107 //课程-跳转h5网页
98 108 self.cellType = .course
99 109 self.playBtn.setTitle("进入", for: .normal)
100   - }else if model.model == "album_ugc"{
  110 + }else if model.model == kCNDownSlideContentsModelModelAlbum_ugc{
101 111 //短剧-跳转短剧播放页
102 112 self.cellType = .playlet
103 113 self.playBtn.setTitle("播放", for: .normal)
... ... @@ -106,6 +116,7 @@ class CNLiveAlbumCell:UITableViewCell{
106 116 self.subTitleLabel.text = model.subTitle
107 117 self.iconImgView.kf.setImage(with: URL(string: model.poster))
108 118 self.titleLabl.width = KSreenWidth-(self.iconImgView.right+15)-80
  119 + self.subTitleLabel.width = self.titleLabl.width
109 120 self.playBtn.left = KSreenWidth-80
110 121 }
111 122 func setupNewUIMsgModel(model:CNLiveAlbumMsgModel,isDetail:Bool){
... ... @@ -115,12 +126,14 @@ class CNLiveAlbumCell:UITableViewCell{
115 126 self.subTitleLabel.text = model.subTitle
116 127 self.iconImgView.kf.setImage(with: URL(string: model.albumImg))
117 128 self.titleLabl.width = KSreenWidth-(self.iconImgView.right+15)-80-30
  129 + self.subTitleLabel.width = self.titleLabl.width
118 130 if self.isDetail{
119 131 self.playBtn.left = KSreenWidth-80
120 132 }else{
121 133 self.playBtn.left = KSreenWidth-80-30
122 134 }
123 135 }
  136 +
124 137 @objc func playBtnAction(){
125 138 var aid = ""
126 139 if self.albumModel != nil{
... ... @@ -134,7 +147,7 @@ class CNLiveAlbumCell:UITableViewCell{
134 147 if (self.albumModel?.model == "1" || self.albumModel?.model == "2" || self.albumModel?.model == "3" || self.albumModel?.model == "4"){
135 148 //课程-跳转h5网页
136 149 self.enterBlock!(self.albumModel!)
137   - }else if self.albumModel?.model == "album_ugc"{
  150 + }else if self.albumModel?.model == kCNDownSlideContentsModelModelAlbum_ugc{
138 151 //短剧-跳转短剧播放页
139 152 navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: aid), animated: pushAnimated)
140 153 }
... ...
metaCode/Classes/Main/HomePages/View/HomepageDetail/CNLiveAlbumImageCell.swift
... ... @@ -11,11 +11,18 @@ class CNLiveAlbumImageCell:UITableViewCell{
11 11  
12 12 //MARK: - 懒加载
13 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: 0, y: 0, width: KSreenWidth, height: KSreenWidth))
15 15 iconImgView.contentMode = .scaleAspectFill
16 16 return iconImgView
17 17 }()
18 18  
  19 + lazy var titleLabel: UILabel = {
  20 + let titleLbl = UILabel(frame: CGRect(x: DownSlideRecommendLeftGap, y: DownSlideRecommendLeftGap+get_system_statusBar_height(), width: KSreenWidth-DownSlideRecommendLeftGap*2, height: 30))
  21 + titleLbl.font = BoldFont_21
  22 + titleLbl.textColor = HexColor("#FFFFFF")
  23 + return titleLbl
  24 + }()
  25 +
19 26 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
20 27 super.init(style: style, reuseIdentifier: reuseIdentifier)
21 28 self.selectionStyle = .none
... ... @@ -29,6 +36,7 @@ class CNLiveAlbumImageCell:UITableViewCell{
29 36 private func setupUI() {
30 37 contentView.backgroundColor = HexColor(kCNDownSlideBackgroundColorHex)
31 38 self.contentView.addSubview(self.iconImgView)
  39 + self.contentView.addSubview(self.titleLabel)
32 40 self.contentView.clipsToBounds = true
33 41 }
34 42  
... ...
metaCode/Classes/Main/HomePages/View/HomepageDetail/CNLiveDuanjuTitleCell.swift
... ... @@ -18,11 +18,10 @@ class CNLiveDuanjuTitleCell:UITableViewCell{
18 18  
19 19 if self.cellType == .course || self.cellType == .playletToCourse{
20 20 self.blockTitleLabl.text = _blockName ?? "全部课程"
21   - self.blockTitleLabl.top = (allCourseCellHeight-30)/2
  21 + self.blockTitleLabl.top = (allCourseCellHeight-30)/2+get_system_statusBar_height()
22 22 }else if self.cellType == .playlet{
23 23 self.blockTitleLabl.text = _blockName ?? "在追短剧"
24 24 self.blockTitleLabl.top = (45-30)/2
25   -
26 25 }
27 26 }
28 27 }
... ...
metaCode/Classes/Main/HomePages/View/PlayletHomePage/CNLivePlayletHomePageCell.swift
... ... @@ -25,6 +25,7 @@ class CNLivePlayletHomePageCell:UITableViewCell{
25 25 lazy var iconImgView :UIImageView = {
26 26 let iconImgView = UIImageView(frame: CGRect(x: 15, y: 12, width: 57, height: 75))
27 27 iconImgView.layer.cornerRadius = 5
  28 + iconImgView.contentMode = .scaleAspectFill
28 29 iconImgView.clipsToBounds = true
29 30 return iconImgView
30 31 }()
... ... @@ -78,7 +79,7 @@ class CNLivePlayletHomePageCell:UITableViewCell{
78 79 //付过费 或 免费
79 80 self.payIconImgView.isHidden = true
80 81 //显示已购买 或者 不显示
81   - if model.product?.productType == "0"{
  82 + if model.product?.productType == "0" || model.product?.productType == "4"{
82 83 //免费
83 84 self.payIconImgView.isHidden = true
84 85 }else if model.product?.productType == "1"{
... ... @@ -90,8 +91,7 @@ class CNLivePlayletHomePageCell:UITableViewCell{
90 91 self.payIconImgView.isHidden = false
91 92 self.payIconImgView.image = UIImage(named: "homePage_payed")
92 93 }else{
93   - self.payIconImgView.isHidden = false
94   - self.payIconImgView.image = UIImage(named: "homePage_payed")
  94 +
95 95 }
96 96 }else{
97 97 //需要付费
... ...
metaCode/Classes/Main/HomePages/View/PlayletHomePage/CNLivePlayletHomePageHeaderCell.swift
... ... @@ -41,6 +41,7 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
41 41 lazy var iconImgView :UIImageView = {
42 42 let iconImgView = UIImageView(frame: CGRect(x: 15, y: 20, width: 112, height: 147))
43 43 iconImgView.layer.cornerRadius = 5
  44 + iconImgView.contentMode = .scaleAspectFill
44 45 iconImgView.clipsToBounds = true
45 46 return iconImgView
46 47 }()
... ...
metaCode/Classes/Main/Util/CNUpSlideAnimationTransition.swift
... ... @@ -151,26 +151,26 @@ extension CNUpSlideAnimationTransition: UIViewControllerAnimatedTransitioning {
151 151 guard let selectedCell = toVC.selectedCell else { return }
152 152 let fromVC = fromNaviVC.topViewController as! CNUpSlideDetailViewController
153 153  
154   - UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
  154 + UIView.animate(withDuration: transitonDuration - 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
155 155 let frame = selectedCell.convert(selectedCell.bgBackView.frame, to: toVC.view)
156 156 fromVC.view.frame = frame
157 157 fromVC.view.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius
158 158 fromVC.scrollView.imageView.frame.size.width = GlobalConstants.todayCardSize.width
159 159 fromVC.scrollView.imageView.frame.size.height = GlobalConstants.todayCardSize.height
160 160 fromVC.closeBtn.alpha = 0
161   -
  161 + fromVC.tableView.alpha = 0
162 162 }) { (completed) in
163 163 transitionContext.completeTransition(completed)
164 164 }
165 165 }else if fromNaviVC.topViewController is CNHomepageDuanJuDetailViewController{
166 166 guard let selectedCell = toVC.selectedDuanjuCell else { return }
167 167 let fromVC = fromNaviVC.topViewController as! CNHomepageDuanJuDetailViewController
168   - UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
  168 + UIView.animate(withDuration: transitonDuration - 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
169 169 let frame = selectedCell.convert(selectedCell.totalView.frame, to: toVC.view)
170 170 fromVC.view.frame = frame
171 171 fromVC.view.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius
172 172 fromVC.closeBtn.alpha = 0
173   -
  173 + fromVC.tableView.alpha = 0
174 174 }) { (completed) in
175 175 transitionContext.completeTransition(completed)
176 176 }
... ... @@ -185,14 +185,14 @@ extension CNUpSlideAnimationTransition: UIViewControllerAnimatedTransitioning {
185 185 guard let selectedCell = toVC.selectedCell else { return }
186 186 let fromVC = fromNaviVC.topViewController as! CNUpSlideDetailViewController
187 187  
188   - UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
  188 + UIView.animate(withDuration: transitonDuration - 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
189 189 let frame = selectedCell.convert(selectedCell.bgBackView.frame, to: toVC.view)
190 190 fromVC.view.frame = frame
191 191 fromVC.view.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius
192 192 fromVC.scrollView.imageView.frame.size.width = GlobalConstants.todayCardSize.width
193 193 fromVC.scrollView.imageView.frame.size.height = GlobalConstants.todayCardSize.height
194 194 fromVC.closeBtn.alpha = 0
195   -
  195 + fromVC.tableView.alpha = 0
196 196 }) { (completed) in
197 197 transitionContext.completeTransition(completed)
198 198 }
... ... @@ -205,14 +205,14 @@ extension CNUpSlideAnimationTransition: UIViewControllerAnimatedTransitioning {
205 205 guard let selectedCell = toVC.selectedCell else { return }
206 206 if fromNaviVC.topViewController is CNUpSlideDetailViewController{
207 207 let fromVC = fromNaviVC.topViewController as! CNUpSlideDetailViewController
208   - UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
  208 + UIView.animate(withDuration: transitonDuration - 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
209 209 let frame = selectedCell.convert(selectedCell.bgBackView.frame, to: toVC.view)
210 210 fromVC.view.frame = frame
211 211 fromVC.view.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius
212 212 fromVC.scrollView.imageView.frame.size.width = GlobalConstants.todayCardSize.width
213 213 fromVC.scrollView.imageView.frame.size.height = GlobalConstants.todayCardSize.height
214 214 fromVC.closeBtn.alpha = 0
215   -
  215 + fromVC.tableView.alpha = 0
216 216 }) { (completed) in
217 217 transitionContext.completeTransition(completed)
218 218 }
... ...