TSEffectPreviewPageVC.swift 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //
  2. // TSEffectPreviewPageVC.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2025/8/12.
  6. //
  7. class TSEffectPreviewPageVC: TSBasePageVC {
  8. override func viewController(at index: Int) -> UIViewController? {
  9. guard index >= 0 && index < dataItems.count else { return nil }
  10. if let model = dataItems[index] as? TSDiscoverItemModel {
  11. return TSEffectPreviewPageItemVC.createBrowserVC(with: model)
  12. }
  13. return nil
  14. }
  15. override func indexOfViewController(_ viewController: UIViewController) -> Int? {
  16. guard let vc = viewController as? TSEffectPreviewPageItemVC,
  17. let index = dataItems.firstIndex(where: { ($0 as? TSDiscoverItemModel) === vc.model }) else {
  18. return nil
  19. }
  20. return index
  21. }
  22. override func dealThings() {
  23. }
  24. }
  25. class TSEffectPreviewPageItemVC: TSBaseVC {
  26. var model:TSDiscoverItemModel
  27. init(model: TSDiscoverItemModel) {
  28. self.model = model
  29. super.init()
  30. }
  31. @MainActor required init?(coder: NSCoder) {
  32. fatalError("init(coder:) has not been implemented")
  33. }
  34. override func createView() {
  35. setNavBarViewHidden(true)
  36. }
  37. // 工厂方法
  38. static func createBrowserVC(with model: TSDiscoverItemModel) -> TSEffectPreviewPageItemVC {
  39. return TSEffectPreviewPageItemComparisonVC(model: model)
  40. }
  41. }
  42. class TSEffectPreviewPageItemComparisonVC: TSEffectPreviewPageItemVC {
  43. lazy var comparisonView: TSImagesComparisonView = {
  44. let comparisonView = TSImagesComparisonView(frame: CGRect(x: 0, y: 300, width: 300, height: 400))
  45. comparisonView.isRunloop = true
  46. comparisonView.cornerRadius = 0
  47. return comparisonView
  48. }()
  49. override func createView() {
  50. super.createView()
  51. contentView.addSubview(comparisonView)
  52. comparisonView.snp.makeConstraints { make in
  53. make.edges.equalToSuperview()
  54. }
  55. kMainAsync {
  56. self.comparisonView.startAnimation(direction: .rightToLeft)
  57. }
  58. }
  59. override func dealThings() {
  60. if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM {
  61. var images = [UIImage]()
  62. for imageNamed in animationModel.imageNameds {
  63. if let image = UIImage(named: imageNamed) {
  64. images.append(image)
  65. }
  66. }
  67. comparisonView.images = images
  68. }
  69. }
  70. }