在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
// // HomeLiveRankCell.swift // YYSwiftProject // // Created by Domo on 2018/7/28. // Copyright © 2018年 知言网络. All rights reserved. //
import UIKit
class HomeLiveRankCell: UICollectionViewCell {
private var multidimensionalRankVosList: [MultidimensionalRankVosModel]?
private let LiveRankCellID = "LiveRankCell" // MARK: - 滚动排行榜 private lazy var collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout.init() layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0) layout.minimumInteritemSpacing = 0 layout.minimumLineSpacing = 0 layout.itemSize = CGSize(width: (YYScreenWidth-30), height:self.frame.size.height) // layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0) layout.scrollDirection = UICollectionViewScrollDirection.horizontal let collectionView = UICollectionView.init(frame:.zero, collectionViewLayout: layout) collectionView.contentSize = CGSize(width: (YYScreenWidth-30), height: self.frame.size.height) collectionView.delegate = self collectionView.dataSource = self collectionView.backgroundColor = UIColor.white collectionView.showsVerticalScrollIndicator = false collectionView.showsHorizontalScrollIndicator = false collectionView.isPagingEnabled = true collectionView.register(LiveRankCell.self, forCellWithReuseIdentifier:LiveRankCellID)
return collectionView }()
var timer: Timer? override init(frame: CGRect) { super.init(frame: frame) self.backgroundColor = UIColor.white self.addSubview(self.collectionView) self.collectionView.snp.makeConstraints { (make) in make.width.height.equalToSuperview() make.center.equalToSuperview() }
// 开启定时器 starTimer() }
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }
// 界面赋值并刷新 var multidimensionalRankVos:[MultidimensionalRankVosModel]? { didSet { guard let model = multidimensionalRankVos else { return } self.multidimensionalRankVosList = model self.collectionView.reloadData() } } } extension HomeLiveRankCell: UICollectionViewDataSource, UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return (self.multidimensionalRankVosList?.count ?? 0)*100 }
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell:LiveRankCell = collectionView.dequeueReusableCell(withReuseIdentifier: LiveRankCellID, for: indexPath) as! LiveRankCell cell.backgroundColor = UIColor.init(red: 248/255.0, green: 245/255.0, blue: 246/255.0, alpha: 1) cell.multidimensionalRankVos = self.multidimensionalRankVosList?[indexPath.row%(self.multidimensionalRankVosList?.count)!] return cell }
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { print(indexPath.row%(self.multidimensionalRankVosList?.count)!) }
/// 开启定时器 func starTimer () { let timer = Timer.init(timeInterval: 3, target: self, selector: #selector(nextPage), userInfo: nil, repeats: true) // 这一句代码涉及到runloop 和 主线程的知识,则在界面上不能执行其他的UI操作 RunLoop.main.add(timer, forMode: RunLoopMode.commonModes) self.timer = timer }
/// 在1秒后,自动跳转到下一页 @objc func nextPage() { // 1.获取collectionView的X轴滚动的偏移量 let currentOffsetX = collectionView.contentOffset.x let offsetX = currentOffsetX + collectionView.bounds.width // 2.滚动该位置 collectionView.setContentOffset(CGPoint(x: offsetX, y: 0), animated: true) }
// // 监听collectionView的滚到 // func scrollViewDidScroll(_ scrollView: UIScrollView) { // // 1、获取滚动的偏移量 + scrollView.bounds.width * 0.5给偏移量加一半,当滑动一般就滚动pageControl的当前选中 // let offsetX = scrollView.contentOffset.x + scrollView.bounds.width * 0.5 // // 2、计算pageContra的currentIndex。这 % (cycleModelArr?.count ?? 1)也是跟上同样道理 // pageControl.currentPage = Int(offsetX / scrollView.bounds.width) % (imageArray?.count ?? 1) // } // /// 当collectionView开始拖动的时候,取消定时器 func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { self.timer?.invalidate() self.timer = nil }
/// 当用户停止拖动的时候,开启定时器 func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { starTimer() }
}
// // LiveRankCell.swift // YYSwiftProject // // Created by Domo on 2018/7/28. // Copyright © 2018年 知言网络. All rights reserved. //
import UIKit
class LiveRankCell: UICollectionViewCell { private lazy var imageView : UIView = { let imageView = UIView() return imageView }()
private lazy var titleLabel : UILabel = { let label = UILabel() label.font = UIFont.systemFont(ofSize: 18) return label }()
private lazy var label : UILabel = { let label = UILabel() label.text = ">" label.textColor = UIColor.lightGray return label }()
override init(frame: CGRect) { super.init(frame: frame)
self.addSubview(self.titleLabel) self.titleLabel.snp.makeConstraints { (make) in make.left.equalToSuperview().offset(10) make.height.equalTo(40) make.width.equalTo(100) make.centerY.equalToSuperview() }
self.addSubview(self.imageView) self.imageView.snp.makeConstraints { (make) in make.right.equalToSuperview().offset(-5) make.top.equalToSuperview().offset(5) make.bottom.equalToSuperview().offset(-5) make.width.equalTo(180) }
self.imageView.addSubview(self.label) self.label.snp.makeConstraints { (make) in make.right.equalToSuperview().offset(-5) make.height.width.equalTo(10) make.centerY.equalToSuperview() } }
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }
var multidimensionalRankVos:MultidimensionalRankVosModel? { didSet { guard let model = multidimensionalRankVos else { return } self.titleLabel.text = model.dimensionName let num:Int = (model.ranks?.count)! let margin:CGFloat = 50 for index in 0..<num { let picView = UIImageView.init(frame: CGRect(x:margin*CGFloat(index)+5*CGFloat(index),y:5,width:margin,height:margin)) picView.layer.masksToBounds = true picView.layer.cornerRadius = picView.frame.size.width/2 picView.kf.setImage(with: URL(string: (model.ranks?[index].coverSmall!)!)) self.imageView.addSubview(picView) } } } }
|
请发表评论