MoviaBox/Thimra/Class/Explore/Controller/SPExplorePageController.swift
2025-04-23 11:33:46 +08:00

145 lines
4.1 KiB
Swift

//
// SPExplorePageController.swift
// Thimra
//
// Created by Overseas on 2025/4/21.
//
import UIKit
class SPExplorePageController: SPViewController {
private lazy var titles: [String] = {
let arr = ["Shorts".localized, "All".localized]
return arr
}()
private lazy var viewControllers: [SPViewController] = {
let vc1 = SPExploreViewController()
let vc2 = SPAllShortViewController()
return [vc1, vc2]
}()
private lazy var itemWidthArr: [NSNumber] = {
var arr: [NSNumber] = []
self.titles.forEach {
var width = $0.size(font: .systemFont(ofSize: 14)).width + 16
if width < 50 {
width = 50
}
arr.append(NSNumber(value: width))
}
return arr
}()
private lazy var menuWidth: CGFloat = {
var width: CGFloat = 0.0
itemWidthArr.forEach {
width += CGFloat($0.floatValue)
}
return width
}()
private lazy var pageView: WMPageController = {
var itemWidthArr: [NSNumber] = []
self.titles.forEach {
var width = $0.size(font: .systemFont(ofSize: 14)).width + 16
if width < 50 {
width = 50
}
itemWidthArr.append(NSNumber(value: width))
}
let pageView = WMPageController()
pageView.delegate = self
pageView.dataSource = self
pageView.titleSizeNormal = 14
pageView.titleSizeSelected = 14
pageView.titleColorNormal = .colorFFFFFF()
pageView.titleColorSelected = .colorFFFFFF()
pageView.progressColor = .colorFFFFFF(alpha: 0.22)
pageView.menuViewStyle = .flood
pageView.menuViewLayoutMode = .center
pageView.itemsWidths = itemWidthArr
pageView.progressHeight = 24
return pageView
}()
private lazy var menuBgView: UIView = {
let view = UIView()
view.addEffectView(style: .light)
view.layer.cornerRadius = 15
view.layer.masksToBounds = true
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
_setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
}
extension SPExplorePageController {
private func _setupUI() {
addChild(pageView)
self.view.addSubview(self.pageView.view)
self.pageView.view.addSubview(menuBgView)
self.pageView.view.bringSubviewToFront(self.pageView.menuView!)
self.pageView.view.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
menuBgView.snp.makeConstraints { make in
make.center.equalTo(self.pageView.menuView!)
make.width.equalTo(menuWidth + 8)
make.height.equalTo(30)
}
}
}
//MARK: -------------- WMPageControllerDelegate & WMPageControllerDataSource --------------
extension SPExplorePageController: WMPageControllerDelegate, WMPageControllerDataSource {
func pageController(_ pageController: WMPageController, preferredFrameForContentView contentView: WMScrollView) -> CGRect {
return CGRect(x: 0, y: 0, width: kSPScreenWidth, height: kSPScreenHeight - kSPTabBarHeight)
}
func pageController(_ pageController: WMPageController, preferredFrameFor menuView: WMMenuView) -> CGRect {
return CGRect(x: 0, y: kSPStatusbarHeight + 10, width: kSPScreenWidth, height: 30)
}
func pageController(_ pageController: WMPageController, titleAt index: Int) -> String {
return titles[index]
}
func numbersOfChildControllers(in pageController: WMPageController) -> Int {
return titles.count
}
func pageController(_ pageController: WMPageController, viewControllerAt index: Int) -> UIViewController {
return viewControllers[index]
}
}