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,28 +39,7 @@ extension CNHomePageAnimationTransition: UIViewControllerAnimatedTransitioning {
39 let fromNavi = fromVCtemp.viewControllers![0] as! CNLiveBaseNavigationController 39 let fromNavi = fromVCtemp.viewControllers![0] as! CNLiveBaseNavigationController
40 let fromVC = fromNavi.viewControllers.first as! CNLiveAuthViewController 40 let fromVC = fromNavi.viewControllers.first as! CNLiveAuthViewController
41 guard let toNaviVC = transitionContext.viewController(forKey: .to) as? CNHomePageBaseNavigationController else { return } 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 guard let selectedCell = fromVC.selectedDuanjuCell else { return } 43 guard let selectedCell = fromVC.selectedDuanjuCell else { return }
65 let toVC = toNaviVC.topViewController as! CNHomepageDuanJuDetailViewController 44 let toVC = toNaviVC.topViewController as! CNHomepageDuanJuDetailViewController
66 let frame = selectedCell.convert(selectedCell.totalView.frame, to: fromVC.view) 45 let frame = selectedCell.convert(selectedCell.totalView.frame, to: fromVC.view)
@@ -87,22 +66,7 @@ extension CNHomePageAnimationTransition: UIViewControllerAnimatedTransitioning { @@ -87,22 +66,7 @@ extension CNHomePageAnimationTransition: UIViewControllerAnimatedTransitioning {
87 guard let toVCTabbar = transitionContext.viewController(forKey: .to) as? CNLiveBaseTabBarViewController else { return } 66 guard let toVCTabbar = transitionContext.viewController(forKey: .to) as? CNLiveBaseTabBarViewController else { return }
88 let toVCNav = toVCTabbar.viewControllers?.first as! CNLiveBaseNavigationController 67 let toVCNav = toVCTabbar.viewControllers?.first as! CNLiveBaseNavigationController
89 let toVC = toVCNav.viewControllers.first as! CNLiveAuthViewController 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 guard let selectedCell = toVC.selectedDuanjuCell else { return } 70 guard let selectedCell = toVC.selectedDuanjuCell else { return }
107 let fromVC = fromNaviVC.topViewController as! CNHomepageDuanJuDetailViewController 71 let fromVC = fromNaviVC.topViewController as! CNHomepageDuanJuDetailViewController
108 UIView.animate(withDuration: transitonDuration - 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 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 +//}