TSHomeVC.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //
  2. // TSHomeVC.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. import TYCyclePagerView
  8. import Photos
  9. import PhotosUI
  10. class TSHomeVC: TSBaseVC {
  11. lazy var navBarView: TSBaseNavContentBarView = {
  12. let navBarView = TSBaseNavContentBarView()
  13. let titleImageView = UIImageView.createImageView(imageName: "nav_title_home", contentMode: .scaleToFill)
  14. navBarView.barView.addSubview(titleImageView)
  15. titleImageView.snp.makeConstraints { make in
  16. make.centerY.equalToSuperview()
  17. make.left.equalTo(16)
  18. }
  19. return navBarView
  20. }()
  21. lazy var hStack: UIStackView = {
  22. let stack = UIStackView()
  23. stack.axis = .horizontal
  24. stack.distribution = .fillEqually
  25. stack.spacing = 16
  26. return stack
  27. }()
  28. lazy var diyButton: SpacedButton = {
  29. let btn = SpacedButton()
  30. btn.setTitle("DIY Live Photo", for: .normal)
  31. btn.setTitleColor(.white, for: .normal)
  32. btn.setImage(UIImage(named: "top_diy"), for: .normal)
  33. btn.setBackgroundImage(UIImage(named: "WallpaperBg"), for: .normal)
  34. btn.addTarget(self, action: #selector(showDiyPaperController), for: .touchUpInside)
  35. btn.titleLabel?.font = .systemFont14
  36. return btn
  37. }()
  38. lazy var shuffleButton: SpacedButton = {
  39. let btn = SpacedButton()
  40. btn.setTitle("Shuffle Packs", for: .normal)
  41. btn.setTitleColor(.white, for: .normal)
  42. btn.setImage(UIImage(named: "top_shuffle"), for: .normal)
  43. btn.setBackgroundImage(UIImage(named: "WallpaperBg"), for: .normal)
  44. btn.addTarget(self, action: #selector(showRandomWallpaperVC), for: .touchUpInside)
  45. btn.titleLabel?.font = .systemFont14
  46. return btn
  47. }()
  48. lazy var collectionComponent: CollectionViewComponent = {
  49. let layout = UICollectionViewFlowLayout()
  50. let cp = CollectionViewComponent(frame: CGRect.zero, layout: layout, attributes: [:])
  51. cp.collectionView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: k_Height_TabBar, right: 0)
  52. cp.itemDidSelectedHandler = { [weak self] _, indexPath in
  53. guard let self = self else { return }
  54. let obj = dataArray.safeObj(At: indexPath.section)
  55. if let bannerModel = obj as? TSHomeBannerDataSectionModel {
  56. if let items = bannerModel.itemModels.first {
  57. kPresentModalVC(target: self, modelVC: TSLiveWallpaperBrowseVC(itemModels: items.items, currentIndex: indexPath.row))
  58. }
  59. } else if let liveModel = obj as? TSImageDataSectionModel {
  60. kPresentModalVC(target: self, modelVC: TSLiveWallpaperBrowseVC(itemModels: liveModel.items, currentIndex: indexPath.row))
  61. }
  62. }
  63. return cp
  64. }()
  65. var dataArray: [Component] = kImageDataCenterShared.liveBannerArray + kImageDataCenterShared.liveListArray
  66. override func createView() {
  67. setViewBgImageNamed(named: "view_main_bg")
  68. navBarContentView.addSubview(navBarView)
  69. navBarView.snp.makeConstraints { make in
  70. make.edges.equalToSuperview()
  71. }
  72. hStack.addArrangedSubview(diyButton)
  73. hStack.addArrangedSubview(shuffleButton)
  74. contentView.addSubview(hStack)
  75. hStack.snp.makeConstraints { make in
  76. make.horizontalEdges.equalToSuperview().inset(16)
  77. make.top.equalToSuperview().offset(16)
  78. make.height.equalTo(60)
  79. }
  80. contentView.addSubview(collectionComponent.collectionView)
  81. collectionComponent.collectionView.snp.makeConstraints { make in
  82. make.top.equalTo(diyButton.snp.bottom)
  83. make.leading.trailing.bottom.equalToSuperview()
  84. }
  85. collectionComponent.reloadView(with: dataArray)
  86. TSNetworkShard.monitorNetworkPermission { success in
  87. if success {
  88. self.collectionComponent.reloadData()
  89. }
  90. }
  91. }
  92. @objc func showDiyPaperController() {
  93. let vc = TSEditLiveVC()
  94. vc.modalPresentationStyle = .overFullScreen
  95. present(vc, animated: true)
  96. }
  97. @objc func showRandomWallpaperVC() {
  98. let vc = TSRandomWallpaperVC()
  99. let nav = TSBaseNavigationC(rootViewController: vc)
  100. nav.modalPresentationStyle = .overFullScreen
  101. present(nav, animated: true)
  102. }
  103. }