Commit 75b5e01a5414e35cbd141a88a205031c1a802394

Authored by 张旭
1 parent e6c6b89e

废弃CNHomepageDetailViewController

metaCode/Classes/Main/HomePages/Controller/AuthController/push相关/CNHomePageAnimationTransition.swift
... ... @@ -39,28 +39,7 @@ extension CNHomePageAnimationTransition: UIViewControllerAnimatedTransitioning {
39 39 let fromNavi = fromVCtemp.viewControllers![0] as! CNLiveBaseNavigationController
40 40 let fromVC = fromNavi.viewControllers.first as! CNLiveAuthViewController
41 41 guard let toNaviVC = transitionContext.viewController(forKey: .to) as? CNHomePageBaseNavigationController else { return }
42   - if toNaviVC.topViewController is CNHomepageDetailViewController{
43   - guard let selectedCell = fromVC.selectedCell else { return }
44   - let toVC = toNaviVC.topViewController as! CNHomepageDetailViewController
45   - let frame = selectedCell.convert(selectedCell.bgBackView.frame, to: fromVC.view)
46   - //2.Set presentation original size.
47   - toVC.view.frame = frame
48   - toVC.scrollView.imageView.frame.size.width = GlobalConstants.todayCardSize.width
49   - toVC.scrollView.imageView.frame.size.height = GlobalConstants.todayCardSize.height
50   -
51   - containerView.addSubview(toNaviVC.view)
52   -
53   - //3.Change original size to final size with animation.
54   - UIView.animate(withDuration: transitonDuration, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: [], animations: {
55   - toVC.view.frame = UIScreen.main.bounds
56   - toVC.scrollView.imageView.frame.size.width = KSreenWidth
57   - toVC.scrollView.imageView.frame.size.height = KSreenWidth*DownSlideSingleCourseImgH/DownSlideSingleCourseW
58   - toVC.closeBtn.alpha = 1
59   -
60   - }) { (completed) in
61   - transitionContext.completeTransition(completed)
62   - }
63   - }else if toNaviVC.topViewController is CNHomepageDuanJuDetailViewController{
  42 + if toNaviVC.topViewController is CNHomepageDuanJuDetailViewController{
64 43 guard let selectedCell = fromVC.selectedDuanjuCell else { return }
65 44 let toVC = toNaviVC.topViewController as! CNHomepageDuanJuDetailViewController
66 45 let frame = selectedCell.convert(selectedCell.totalView.frame, to: fromVC.view)
... ... @@ -87,22 +66,7 @@ extension CNHomePageAnimationTransition: UIViewControllerAnimatedTransitioning {
87 66 guard let toVCTabbar = transitionContext.viewController(forKey: .to) as? CNLiveBaseTabBarViewController else { return }
88 67 let toVCNav = toVCTabbar.viewControllers?.first as! CNLiveBaseNavigationController
89 68 let toVC = toVCNav.viewControllers.first as! CNLiveAuthViewController
90   - if fromNaviVC.topViewController is CNHomepageDetailViewController{
91   - guard let selectedCell = toVC.selectedCell else { return }
92   - let fromVC = fromNaviVC.topViewController as! CNHomepageDetailViewController
93   -
94   - UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
95   - let frame = selectedCell.convert(selectedCell.bgBackView.frame, to: toVC.view)
96   - fromVC.view.frame = frame
97   - fromVC.view.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius
98   - fromVC.scrollView.imageView.frame.size.width = GlobalConstants.todayCardSize.width
99   - fromVC.scrollView.imageView.frame.size.height = GlobalConstants.todayCardSize.height
100   - fromVC.closeBtn.alpha = 0
101   -
102   - }) { (completed) in
103   - transitionContext.completeTransition(completed)
104   - }
105   - }else if fromNaviVC.topViewController is CNHomepageDuanJuDetailViewController{
  69 + if fromNaviVC.topViewController is CNHomepageDuanJuDetailViewController{
106 70 guard let selectedCell = toVC.selectedDuanjuCell else { return }
107 71 let fromVC = fromNaviVC.topViewController as! CNHomepageDuanJuDetailViewController
108 72 UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
... ...
metaCode/Classes/Main/HomePages/Controller/AuthController/push相关/CNHomepageDetailViewController.swift
  1 +////
  2 +//// CNHomepageDetailViewController.swift
  3 +//// metaCode
  4 +////
  5 +//// Created by zx on 2024/1/5.
  6 +//// 首页--短剧大图点击详情页(废弃) -> CNUpSlideDetailViewController
1 7 //
2   -// CNHomepageDetailViewController.swift
3   -// metaCode
  8 +//import Foundation
  9 +//import MJRefresh
  10 +//import EmptyDataSet_Swift
4 11 //
5   -// Created by zx on 2024/1/5.
6   -// 首页--短剧大图点击详情页
7   -
8   -import Foundation
9   -import MJRefresh
10   -import EmptyDataSet_Swift
11   -
12   -class CNHomepageDetailViewController: CNLiveBaseViewController ,UITableViewDataSource, UITableViewDelegate,EmptyDataSetSource, EmptyDataSetDelegate{
13   -
14   - //slideModel
15   - var _slideModel : CNLiveDownSlideModel?
16   - var slideModel : CNLiveDownSlideModel? {
17   - get{
18   - _slideModel
19   - }
20   - set{
21   - _slideModel = newValue!
22   - }
23   - }
24   -
25   - var dismissClosure: (()->())?
26   - //the point when start to interactive
27   - var interactiveStartingPoint: CGPoint? = nil
28   - var draggingDownToDismiss = false
29   - let cell: CNDownSlideSingleCourseCell!
30   -
31   - private lazy var dismissPanGesture: UIPanGestureRecognizer = {
32   - let ges = UIPanGestureRecognizer()
33   - ges.maximumNumberOfTouches = 1
34   - ges.addTarget(self, action: #selector(handleDismissPan(gesture:)))
35   - ges.delegate = self
36   - return ges
37   - }()
38   -
39   - lazy var scrollView: CNUpSlideDetailScrollView = {
40   - let frame = self.view.bounds
41   - let view = CNUpSlideDetailScrollView(frame: frame)
42   - view.callBack = {(contentMdl:CNLiveDownSlideContentsModel)->Void in
43   - CNLiveDownSlideTool.detailPushWebVCWithContentsMdl(contentMdl: contentMdl, viewController: self)
44   - }
45   - view.delegate = self
46   - return view
47   - }()
48   -
49   - lazy var closeBtn: UIButton = {
50   - let btn = UIButton()
51   - btn.frame = CGRect(x: KSreenWidth - 20 - 30, y: KStatusBarHeight+20, width: 30, height: 30)
52   - btn.setImage(#imageLiteral(resourceName: "close_button"), for: .normal)
53   - btn.addTarget(self, action: #selector(closeAction), for: .touchUpInside)
54   - return btn
55   - }()
56   - init(cell: CNDownSlideSingleCourseCell,slideModel:CNLiveDownSlideModel) {
57   - self.pageNum = 1
58   - self.cell = cell
59   - super.init(nibName: nil, bundle: nil)
60   - self.slideModel = slideModel
61   - self.setupTranstion()
62   - setNeedsStatusBarAppearanceUpdate()
63   -
64   - }
65   -
66   - private func setupTranstion() {
67   - modalPresentationStyle = .custom
68   - transitioningDelegate = self
69   - }
70   -
71   - required init?(coder aDecoder: NSCoder) {
72   - fatalError("init(coder:) has not been implemented")
73   - }
74   - override func viewDidLoad() {
75   - super.viewDidLoad()
76   - setupUI()
77   - getImageFromCell()
78   - self.getBlockContents(page: 1)
79   - }
80   -
81   - private func setupUI() {
82   - self.view.layer.masksToBounds = true
83   -// view.addSubview(scrollView)
84   -// scrollView.slideModel = _slideModel
85   - self.view.addSubview(self.tableView)
86   - self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight)
87   - view.addSubview(closeBtn)
88   - view.addGestureRecognizer(dismissPanGesture)
89   -
90   - if #available(iOS 11.0, *) {
91   - scrollView.contentInsetAdjustmentBehavior = .never
92   - } else {
93   - automaticallyAdjustsScrollViewInsets = false
94   - }
95   - }
96   -
97   - private func getImageFromCell() {
98   - scrollView.imageView.image = cell.bgImageView.image
99   - }
100   - @objc private func closeAction() {
101   - dismiss(animated: true, completion: nil)
102   - let nav = self.navigationController as! CNHomePageBaseNavigationController
103   - nav.dismissClosure?()
104   - }
105   - @objc private func handleDismissPan(gesture: UIPanGestureRecognizer) {
106   - if !draggingDownToDismiss {
107   - return
108   - }
109   -
110   - let startingPoint: CGPoint
111   -
112   - if let p = interactiveStartingPoint {
113   - startingPoint = p
114   - } else {
115   - startingPoint = gesture.location(in: nil)
116   - interactiveStartingPoint = startingPoint
117   - }
118   -
119   - let currentLocation = gesture.location(in: nil)
120   -
121   - var progress = (currentLocation.y - startingPoint.y) / 100
122   -
123   - //prevent viewController bigger when scrolling up
124   - if currentLocation.y <= startingPoint.y {
125   - progress = 0
126   - }
127   -
128   - if progress >= 1.0 {
129   - dismiss(animated: true, completion: nil)
130   - let nav = self.navigationController as! CNHomePageBaseNavigationController
131   - nav.dismissClosure?()
132   -// dismissClosure?()
133   - stopDismissPanGesture(gesture)
134   - return
135   - }
136   -
137   - let targetShrinkScale: CGFloat = 0.86
138   - let currentScale: CGFloat = 1 - (1 - targetShrinkScale) * progress
139   -
140   - switch gesture.state {
141   - case .began,.changed:
142   - scrollView.isScrollEnabled = false
143   - gesture.view?.transform = CGAffineTransform(scaleX: currentScale, y: currentScale)
144   - gesture.view?.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius * (progress)
145   - scrollView.showsVerticalScrollIndicator = false
146   - case .cancelled,.ended:
147   - scrollView.isScrollEnabled = true
148   - stopDismissPanGesture(gesture)
149   - default:
150   - break
151   - }
152   - }
153   -
154   - //当下拉Offset超过100或取消下拉手势时,执行此方法
155   - private func stopDismissPanGesture(_ gesture: UIPanGestureRecognizer) {
156   - draggingDownToDismiss = false
157   - interactiveStartingPoint = nil
158   - scrollView.showsVerticalScrollIndicator = true
159   -
160   - UIView.animate(withDuration: 0.2) {
161   - gesture.view?.transform = CGAffineTransform.identity
162   - }
163   - }
164   -
165   -
166   -
167   -
168   - let kCNLiveAlbumImageCellIdentifier = "kCNLiveAlbumImageCellIdentifier"
169   - let kCNLiveAlbumCellIdentifier = "kCNLiveAlbumCellIdentifier"
170   -
171   - var pageNum: NSInteger
172   - var network_type: CNLiveMineResponseType!
173   - // MARK: - 懒加载
174   - ///数据源
175   - lazy var dataArray: NSMutableArray = {
176   - var dataArray = NSMutableArray()
177   - return dataArray
178   - }()
179   - lazy var tableView : UITableView = {
180   - let tableView = UITableView(frame: .zero, style: .plain)
181   - tableView.dataSource = self
182   - tableView.delegate = self
183   - tableView.emptyDataSetSource = self
184   - tableView.emptyDataSetDelegate = self
185   - tableView.separatorStyle = .none
186   - tableView.tableFooterView = UIView.init()
187   - tableView.register(CNLiveAlbumCell.self, forCellReuseIdentifier: kCNLiveAlbumCellIdentifier)
188   - tableView.register(CNLiveAlbumImageCell.self, forCellReuseIdentifier: kCNLiveAlbumImageCellIdentifier)
189   - return tableView
190   - }()
191   -
192   -
193   - func numberOfSections(in tableView: UITableView) -> Int {
194   - 2
195   - }
196   - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
197   - if section == 0{
198   - return 1
199   - }else{
200   - return self.dataArray.count
201   - }
202   - }
203   -
204   - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
205   -
206   - if indexPath.section == 0{
207   - guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveAlbumImageCellIdentifier) as? CNLiveAlbumImageCell
208   - else {
209   - let cell = CNLiveAlbumImageCell()
210   - return cell
211   - }
212   - cell.iconImgView.image = self.cell.bgImageView.image
213   - return cell
214   - }else{
215   - let albumModel = self.dataArray[indexPath.row] as! CNLiveAlbumModel
216   -
217   - guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveAlbumCellIdentifier) as? CNLiveAlbumCell
218   - else {
219   - let cell = CNLiveAlbumCell()
220   - return cell
221   - }
222   - cell.albumModel = albumModel
223   - return cell
224   - }
225   - }
226   - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
227   - if indexPath.section == 0{
228   - return KSreenWidth
229   - }else{
230   - return 75
231   - }
232   - }
233   -
234   - // MARK: - 获取全部专辑列表
235   - func getBlockContents(page:NSInteger){
236   - showLoading(message: "")
237   - CNLiveHomePageViewModel.getBlockContents(blockId: self.slideModel!.blockId ?? "", page: page) {[weak self] result, status in
238   - hiddenLoading()
239   - if status == .success{
240   - if self!.pageNum > 1 {
241   - self!.dataArray.addObjects(from: result as! [CNLiveAlbumModel])
242   - }
243   - if self!.pageNum == 1 {
244   - self!.dataArray.removeAllObjects()
245   - self!.dataArray.addObjects(from: result as! [CNLiveAlbumModel])
246   - if self!.dataArray.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil {
247   - self!.addRefreshView()
248   - self!.pageNum = self!.pageNum + 1
249   - self!.getBlockContents(page: self!.pageNum)
250   - }
251   - }
252   -
253   - self!.tableView.mj_header?.endRefreshing()
254   - self!.tableView.mj_footer?.endRefreshing()
255   - self!.tableView.reloadData()
256   - if (result as! Array<Any>).count == 0 {
257   - self!.tableView.mj_footer?.endRefreshingWithNoMoreData()
258   - self!.tableView.reloadData()
259   - }
260   -
261   - }else if (status == .noNetwork) {
262   - self!.network_type = .noNetwork
263   - self!.tableView.reloadEmptyDataSet()
264   - } else {
265   - self!.network_type = .failed
266   - self!.tableView.reloadEmptyDataSet()
267   - }
268   - }
269   - }
270   - func addRefreshView() {
271   - tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in
272   - self!.pageNum = 1
273   - self!.getBlockContents(page: 1)
274   - })
275   -
276   - tableView.mj_footer = MJRefreshAutoNormalFooter.init(refreshingBlock: {[weak self] in
277   - self!.pageNum = self!.pageNum + 1
278   - self!.getBlockContents(page: self!.pageNum)
279   - })
280   - }
281   -}
282   -
283   -extension CNHomepageDetailViewController: UIViewControllerTransitioningDelegate {
284   -
285   - func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
286   - return CNHomePageAnimationTransition(animationType: .present)
287   - }
288   -
289   - func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
290   - return CNHomePageAnimationTransition(animationType: .dismiss)
291   - }
292   -
293   - func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? {
294   - return CNUpSlideCardPresentationController(presentedViewController: presented, presenting: presenting)
295   - }
296   -}
297   -
298   -extension CNHomepageDetailViewController: UIScrollViewDelegate {
299   - func scrollViewDidScroll(_ scrollView: UIScrollView) {
300   -
301   - if scrollView.contentOffset.y < 0 {
302   - scrollView.contentOffset = .zero
303   - draggingDownToDismiss = true
304   - }
305   - }
306   -}
307   -
308   -extension CNHomepageDetailViewController: UIGestureRecognizerDelegate {
309   - func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
310   - return true
311   - }
312   -}
313   -
314   -extension CNHomepageDetailViewController {
315   -
316   - func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
317   - if network_type == .failed || network_type == .unkonw {
318   - return UIImage(named: "mine_list_source_unusual_failed")
319   - }
320   - if dataArray.count == 0 {
321   - return UIImage(named: "mine_list_source_unusual_empty")
322   - }
323   - if network_type == .noNetwork {
324   - return UIImage(named: "mine_list_source_unusual_noNet")
325   - }
326   - return UIImage(named: "mine_list_source_unusual_empty")
327   - }
328   -
329   - func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
330   - var defult_string = ""
331   - if network_type == .failed || network_type == .unkonw {
332   - defult_string = "接口请求错误,刷新试试~"
333   - }
334   - if network_type == .noNetwork {
335   - defult_string = "网络开小差了,刷新试试~"
336   - }
337   - if dataArray.count == 0 {
338   - defult_string = "暂时没有数据~"
339   - }
340   - return NSAttributedString(string: defult_string, attributes: [.font: Font_17,.foregroundColor: HexColor("#666666")!])
341   - }
342   -
343   - func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? {
344   - if network_type == .failed || network_type == .noNetwork {
345   - let attributes = [NSAttributedString.Key.font:Font_16_Fit,
346   - NSAttributedString.Key.foregroundColor: HexColor("#609BFF")]
347   - return NSAttributedString(string: "刷一刷", attributes: attributes as [NSAttributedString.Key : Any])
348   - }
349   - return nil
350   - }
351   -
352   - func emptyDataSet(_ scrollView: UIScrollView, didTapView view: UIView) {
353   - if network_type == .failed || network_type == .noNetwork {
354   - getBlockContents(page: 1)
355   - }
356   - }
357   -}
  12 +//class CNHomepageDetailViewController: CNLiveBaseViewController ,UITableViewDataSource, UITableViewDelegate,EmptyDataSetSource, EmptyDataSetDelegate{
  13 +//
  14 +// //slideModel
  15 +// var _slideModel : CNLiveDownSlideModel?
  16 +// var slideModel : CNLiveDownSlideModel? {
  17 +// get{
  18 +// _slideModel
  19 +// }
  20 +// set{
  21 +// _slideModel = newValue!
  22 +// }
  23 +// }
  24 +//
  25 +// var dismissClosure: (()->())?
  26 +// //the point when start to interactive
  27 +// var interactiveStartingPoint: CGPoint? = nil
  28 +// var draggingDownToDismiss = false
  29 +// let cell: CNDownSlideSingleCourseCell!
  30 +//
  31 +// private lazy var dismissPanGesture: UIPanGestureRecognizer = {
  32 +// let ges = UIPanGestureRecognizer()
  33 +// ges.maximumNumberOfTouches = 1
  34 +// ges.addTarget(self, action: #selector(handleDismissPan(gesture:)))
  35 +// ges.delegate = self
  36 +// return ges
  37 +// }()
  38 +//
  39 +// lazy var scrollView: CNUpSlideDetailScrollView = {
  40 +// let frame = self.view.bounds
  41 +// let view = CNUpSlideDetailScrollView(frame: frame)
  42 +// view.callBack = {(contentMdl:CNLiveDownSlideContentsModel)->Void in
  43 +// CNLiveDownSlideTool.detailPushWebVCWithContentsMdl(contentMdl: contentMdl, viewController: self)
  44 +// }
  45 +// view.delegate = self
  46 +// return view
  47 +// }()
  48 +//
  49 +// lazy var closeBtn: UIButton = {
  50 +// let btn = UIButton()
  51 +// btn.frame = CGRect(x: KSreenWidth - 20 - 30, y: KStatusBarHeight+20, width: 30, height: 30)
  52 +// btn.setImage(#imageLiteral(resourceName: "close_button"), for: .normal)
  53 +// btn.addTarget(self, action: #selector(closeAction), for: .touchUpInside)
  54 +// return btn
  55 +// }()
  56 +// init(cell: CNDownSlideSingleCourseCell,slideModel:CNLiveDownSlideModel) {
  57 +// self.pageNum = 1
  58 +// self.cell = cell
  59 +// super.init(nibName: nil, bundle: nil)
  60 +// self.slideModel = slideModel
  61 +// self.setupTranstion()
  62 +// setNeedsStatusBarAppearanceUpdate()
  63 +//
  64 +// }
  65 +//
  66 +// private func setupTranstion() {
  67 +// modalPresentationStyle = .custom
  68 +// transitioningDelegate = self
  69 +// }
  70 +//
  71 +// required init?(coder aDecoder: NSCoder) {
  72 +// fatalError("init(coder:) has not been implemented")
  73 +// }
  74 +// override func viewDidLoad() {
  75 +// super.viewDidLoad()
  76 +// setupUI()
  77 +// getImageFromCell()
  78 +// self.getBlockContents(page: 1)
  79 +// }
  80 +//
  81 +// private func setupUI() {
  82 +// self.view.layer.masksToBounds = true
  83 +//// view.addSubview(scrollView)
  84 +//// scrollView.slideModel = _slideModel
  85 +// self.view.addSubview(self.tableView)
  86 +// self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight)
  87 +// view.addSubview(closeBtn)
  88 +// view.addGestureRecognizer(dismissPanGesture)
  89 +//
  90 +// if #available(iOS 11.0, *) {
  91 +// scrollView.contentInsetAdjustmentBehavior = .never
  92 +// } else {
  93 +// automaticallyAdjustsScrollViewInsets = false
  94 +// }
  95 +// }
  96 +//
  97 +// private func getImageFromCell() {
  98 +// scrollView.imageView.image = cell.bgImageView.image
  99 +// }
  100 +// @objc private func closeAction() {
  101 +// dismiss(animated: true, completion: nil)
  102 +// let nav = self.navigationController as! CNHomePageBaseNavigationController
  103 +// nav.dismissClosure?()
  104 +// }
  105 +// @objc private func handleDismissPan(gesture: UIPanGestureRecognizer) {
  106 +// if !draggingDownToDismiss {
  107 +// return
  108 +// }
  109 +//
  110 +// let startingPoint: CGPoint
  111 +//
  112 +// if let p = interactiveStartingPoint {
  113 +// startingPoint = p
  114 +// } else {
  115 +// startingPoint = gesture.location(in: nil)
  116 +// interactiveStartingPoint = startingPoint
  117 +// }
  118 +//
  119 +// let currentLocation = gesture.location(in: nil)
  120 +//
  121 +// var progress = (currentLocation.y - startingPoint.y) / 100
  122 +//
  123 +// //prevent viewController bigger when scrolling up
  124 +// if currentLocation.y <= startingPoint.y {
  125 +// progress = 0
  126 +// }
  127 +//
  128 +// if progress >= 1.0 {
  129 +// dismiss(animated: true, completion: nil)
  130 +// let nav = self.navigationController as! CNHomePageBaseNavigationController
  131 +// nav.dismissClosure?()
  132 +//// dismissClosure?()
  133 +// stopDismissPanGesture(gesture)
  134 +// return
  135 +// }
  136 +//
  137 +// let targetShrinkScale: CGFloat = 0.86
  138 +// let currentScale: CGFloat = 1 - (1 - targetShrinkScale) * progress
  139 +//
  140 +// switch gesture.state {
  141 +// case .began,.changed:
  142 +// scrollView.isScrollEnabled = false
  143 +// gesture.view?.transform = CGAffineTransform(scaleX: currentScale, y: currentScale)
  144 +// gesture.view?.layer.cornerRadius = GlobalConstants.toDayCardCornerRadius * (progress)
  145 +// scrollView.showsVerticalScrollIndicator = false
  146 +// case .cancelled,.ended:
  147 +// scrollView.isScrollEnabled = true
  148 +// stopDismissPanGesture(gesture)
  149 +// default:
  150 +// break
  151 +// }
  152 +// }
  153 +//
  154 +// //当下拉Offset超过100或取消下拉手势时,执行此方法
  155 +// private func stopDismissPanGesture(_ gesture: UIPanGestureRecognizer) {
  156 +// draggingDownToDismiss = false
  157 +// interactiveStartingPoint = nil
  158 +// scrollView.showsVerticalScrollIndicator = true
  159 +//
  160 +// UIView.animate(withDuration: 0.2) {
  161 +// gesture.view?.transform = CGAffineTransform.identity
  162 +// }
  163 +// }
  164 +//
  165 +//
  166 +//
  167 +//
  168 +// let kCNLiveAlbumImageCellIdentifier = "kCNLiveAlbumImageCellIdentifier"
  169 +// let kCNLiveAlbumCellIdentifier = "kCNLiveAlbumCellIdentifier"
  170 +//
  171 +// var pageNum: NSInteger
  172 +// var network_type: CNLiveMineResponseType!
  173 +// // MARK: - 懒加载
  174 +// ///数据源
  175 +// lazy var dataArray: NSMutableArray = {
  176 +// var dataArray = NSMutableArray()
  177 +// return dataArray
  178 +// }()
  179 +// lazy var tableView : UITableView = {
  180 +// let tableView = UITableView(frame: .zero, style: .plain)
  181 +// tableView.dataSource = self
  182 +// tableView.delegate = self
  183 +// tableView.emptyDataSetSource = self
  184 +// tableView.emptyDataSetDelegate = self
  185 +// tableView.separatorStyle = .none
  186 +// tableView.tableFooterView = UIView.init()
  187 +// tableView.register(CNLiveAlbumCell.self, forCellReuseIdentifier: kCNLiveAlbumCellIdentifier)
  188 +// tableView.register(CNLiveAlbumImageCell.self, forCellReuseIdentifier: kCNLiveAlbumImageCellIdentifier)
  189 +// return tableView
  190 +// }()
  191 +//
  192 +//
  193 +// func numberOfSections(in tableView: UITableView) -> Int {
  194 +// 2
  195 +// }
  196 +// func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  197 +// if section == 0{
  198 +// return 1
  199 +// }else{
  200 +// return self.dataArray.count
  201 +// }
  202 +// }
  203 +//
  204 +// func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  205 +//
  206 +// if indexPath.section == 0{
  207 +// guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveAlbumImageCellIdentifier) as? CNLiveAlbumImageCell
  208 +// else {
  209 +// let cell = CNLiveAlbumImageCell()
  210 +// return cell
  211 +// }
  212 +// cell.iconImgView.image = self.cell.bgImageView.image
  213 +// return cell
  214 +// }else{
  215 +// let albumModel = self.dataArray[indexPath.row] as! CNLiveAlbumModel
  216 +//
  217 +// guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveAlbumCellIdentifier) as? CNLiveAlbumCell
  218 +// else {
  219 +// let cell = CNLiveAlbumCell()
  220 +// return cell
  221 +// }
  222 +// cell.albumModel = albumModel
  223 +// return cell
  224 +// }
  225 +// }
  226 +// func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  227 +// if indexPath.section == 0{
  228 +// return KSreenWidth
  229 +// }else{
  230 +// return 75
  231 +// }
  232 +// }
  233 +//
  234 +// // MARK: - 获取全部专辑列表
  235 +// func getBlockContents(page:NSInteger){
  236 +// showLoading(message: "")
  237 +// CNLiveHomePageViewModel.getBlockContents(blockId: self.slideModel!.blockId ?? "", page: page) {[weak self] result, status in
  238 +// hiddenLoading()
  239 +// if status == .success{
  240 +// if self!.pageNum > 1 {
  241 +// self!.dataArray.addObjects(from: result as! [CNLiveAlbumModel])
  242 +// }
  243 +// if self!.pageNum == 1 {
  244 +// self!.dataArray.removeAllObjects()
  245 +// self!.dataArray.addObjects(from: result as! [CNLiveAlbumModel])
  246 +// if self!.dataArray.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil {
  247 +// self!.addRefreshView()
  248 +// self!.pageNum = self!.pageNum + 1
  249 +// self!.getBlockContents(page: self!.pageNum)
  250 +// }
  251 +// }
  252 +//
  253 +// self!.tableView.mj_header?.endRefreshing()
  254 +// self!.tableView.mj_footer?.endRefreshing()
  255 +// self!.tableView.reloadData()
  256 +// if (result as! Array<Any>).count == 0 {
  257 +// self!.tableView.mj_footer?.endRefreshingWithNoMoreData()
  258 +// self!.tableView.reloadData()
  259 +// }
  260 +//
  261 +// }else if (status == .noNetwork) {
  262 +// self!.network_type = .noNetwork
  263 +// self!.tableView.reloadEmptyDataSet()
  264 +// } else {
  265 +// self!.network_type = .failed
  266 +// self!.tableView.reloadEmptyDataSet()
  267 +// }
  268 +// }
  269 +// }
  270 +// func addRefreshView() {
  271 +// tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in
  272 +// self!.pageNum = 1
  273 +// self!.getBlockContents(page: 1)
  274 +// })
  275 +//
  276 +// tableView.mj_footer = MJRefreshAutoNormalFooter.init(refreshingBlock: {[weak self] in
  277 +// self!.pageNum = self!.pageNum + 1
  278 +// self!.getBlockContents(page: self!.pageNum)
  279 +// })
  280 +// }
  281 +//}
  282 +//
  283 +//extension CNHomepageDetailViewController: UIViewControllerTransitioningDelegate {
  284 +//
  285 +// func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
  286 +// return CNHomePageAnimationTransition(animationType: .present)
  287 +// }
  288 +//
  289 +// func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
  290 +// return CNHomePageAnimationTransition(animationType: .dismiss)
  291 +// }
  292 +//
  293 +// func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? {
  294 +// return CNUpSlideCardPresentationController(presentedViewController: presented, presenting: presenting)
  295 +// }
  296 +//}
  297 +//
  298 +//extension CNHomepageDetailViewController: UIScrollViewDelegate {
  299 +// func scrollViewDidScroll(_ scrollView: UIScrollView) {
  300 +//
  301 +// if scrollView.contentOffset.y < 0 {
  302 +// scrollView.contentOffset = .zero
  303 +// draggingDownToDismiss = true
  304 +// }
  305 +// }
  306 +//}
  307 +//
  308 +//extension CNHomepageDetailViewController: UIGestureRecognizerDelegate {
  309 +// func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
  310 +// return true
  311 +// }
  312 +//}
  313 +//
  314 +//extension CNHomepageDetailViewController {
  315 +//
  316 +// func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
  317 +// if network_type == .failed || network_type == .unkonw {
  318 +// return UIImage(named: "mine_list_source_unusual_failed")
  319 +// }
  320 +// if dataArray.count == 0 {
  321 +// return UIImage(named: "mine_list_source_unusual_empty")
  322 +// }
  323 +// if network_type == .noNetwork {
  324 +// return UIImage(named: "mine_list_source_unusual_noNet")
  325 +// }
  326 +// return UIImage(named: "mine_list_source_unusual_empty")
  327 +// }
  328 +//
  329 +// func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
  330 +// var defult_string = ""
  331 +// if network_type == .failed || network_type == .unkonw {
  332 +// defult_string = "接口请求错误,刷新试试~"
  333 +// }
  334 +// if network_type == .noNetwork {
  335 +// defult_string = "网络开小差了,刷新试试~"
  336 +// }
  337 +// if dataArray.count == 0 {
  338 +// defult_string = "暂时没有数据~"
  339 +// }
  340 +// return NSAttributedString(string: defult_string, attributes: [.font: Font_17,.foregroundColor: HexColor("#666666")!])
  341 +// }
  342 +//
  343 +// func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? {
  344 +// if network_type == .failed || network_type == .noNetwork {
  345 +// let attributes = [NSAttributedString.Key.font:Font_16_Fit,
  346 +// NSAttributedString.Key.foregroundColor: HexColor("#609BFF")]
  347 +// return NSAttributedString(string: "刷一刷", attributes: attributes as [NSAttributedString.Key : Any])
  348 +// }
  349 +// return nil
  350 +// }
  351 +//
  352 +// func emptyDataSet(_ scrollView: UIScrollView, didTapView view: UIView) {
  353 +// if network_type == .failed || network_type == .noNetwork {
  354 +// getBlockContents(page: 1)
  355 +// }
  356 +// }
  357 +//}
... ...