TSPurchaseRroPageView.swift 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. //
  2. // TSPurchaseRroPageView.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2025/8/20.
  6. //
  7. import TYCyclePagerView
  8. class TSPurchaseRroPageView : TSBaseView {
  9. var itemSize:CGSize = UIScreen.main.bounds.size
  10. lazy var models:[TSDiscoverItemModel] = [TSDiscoverItemModel](){
  11. didSet{
  12. itemSize = self.bounds.size
  13. pageControl.numberOfPages = models.count
  14. cyclePagerView.reloadData()
  15. kMainShort {
  16. guard let collectionView = self.cyclePagerView.collectionView else { return }
  17. }
  18. }
  19. }
  20. lazy var pageControl: TYPageControl = {
  21. let pageControl = TYPageControl()
  22. pageControl.currentPageIndicatorSize = CGSize(width: 20, height: 1)
  23. pageControl.pageIndicatorSize = CGSize(width: 20, height: 1)
  24. pageControl.currentPageIndicatorTintColor = .white
  25. pageControl.pageIndicatorTintColor = .white.withAlphaComponent(0.5)
  26. pageControl.pageIndicatorSpaing = 8
  27. pageControl.contentHorizontalAlignment = .center
  28. return pageControl
  29. }()
  30. lazy var cyclePagerView: TYCyclePagerView = {
  31. let pagerView = TYCyclePagerView()
  32. pagerView.isInfiniteLoop = true
  33. pagerView.autoScrollInterval = 5.0
  34. pagerView.delegate = self
  35. pagerView.dataSource = self
  36. pagerView.layout.layoutType = TYCyclePagerTransformLayoutType.linear
  37. pagerView.register(TSPurchaseRroPageViewCell.classForCoder(), forCellWithReuseIdentifier: "TSPurchaseRroPageViewCell")
  38. pagerView.addSubview(pageControl)
  39. pageControl.snp.makeConstraints { make in
  40. make.bottom.equalTo(-8)
  41. make.leading.equalTo(0)
  42. make.trailing.equalTo(0)
  43. make.height.equalTo(1)
  44. }
  45. return pagerView
  46. }()
  47. override func creatUI() {
  48. }
  49. }
  50. extension TSPurchaseRroPageView : TYCyclePagerViewDelegate, TYCyclePagerViewDataSource{
  51. func numberOfItems(in pageView: TYCyclePagerView) -> Int {
  52. return models.count
  53. }
  54. func pagerView(_ pagerView: TYCyclePagerView, cellForItemAt index: Int) -> UICollectionViewCell {
  55. if let itemModel = models.safeObj(At: index),
  56. let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "TSPurchaseRroPageViewCell", for: index) as? TSPurchaseRroPageViewCell
  57. {
  58. cell.model = itemModel
  59. return cell
  60. }
  61. return UICollectionViewCell()
  62. }
  63. func layout(for pageView: TYCyclePagerView) -> TYCyclePagerViewLayout {
  64. let layout = TYCyclePagerViewLayout()
  65. layout.itemSize = itemSize
  66. layout.itemSpacing = 0
  67. layout.itemHorizontalCenter = true
  68. layout.layoutType = .normal
  69. return layout
  70. }
  71. func pagerView(_ pageView: TYCyclePagerView, didSelectedItemCell cell: UICollectionViewCell, at index: Int) {
  72. }
  73. func pagerViewDidScroll(_ pageView: TYCyclePagerView) {
  74. }
  75. func pagerView(_ pageView: TYCyclePagerView, didScrollFrom fromIndex: Int, to toIndex: Int) {
  76. self.pageControl.currentPage = toIndex;
  77. }
  78. }
  79. class TSPurchaseRroPageViewCell: TSBaseCollectionCell {
  80. var model:TSDiscoverItemModel?
  81. override func creatUI() {
  82. }
  83. }