200 lines
6.8 KiB
Swift
200 lines
6.8 KiB
Swift
//
|
|
// SPMyListViewController.swift
|
|
// ShortPlay
|
|
//
|
|
// Created by 曾觉新 on 2025/4/18.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class SPMyListViewController: SPViewController {
|
|
|
|
|
|
private lazy var titles = ["Follow List".localized, "Play List".localized]
|
|
|
|
private lazy var viewControllers: [SPMyListChildViewController] = {
|
|
let vc1 = SPCollectListViewController()
|
|
vc1.allSelectedStateDidChange = { [weak self] isAllSelected in
|
|
self?.allSelectedButton.isSelected = isAllSelected
|
|
}
|
|
let vc2 = SPPlayHistoryViewController()
|
|
vc2.allSelectedStateDidChange = { [weak self] isAllSelected in
|
|
self?.allSelectedButton.isSelected = isAllSelected
|
|
}
|
|
|
|
return [vc1, vc2]
|
|
}()
|
|
|
|
private lazy var sp_isEditing = false {
|
|
didSet {
|
|
editButton.isHidden = sp_isEditing
|
|
pageView.segmentedView.isHidden = sp_isEditing
|
|
|
|
cancelButton.isHidden = !sp_isEditing
|
|
allSelectedButton.isHidden = !sp_isEditing
|
|
pageView.pageContentScrollView.isScrollEnabled = !sp_isEditing
|
|
|
|
let vc = viewControllers[pageView.selectedIndex]
|
|
vc.sp_isEditing = sp_isEditing
|
|
|
|
if !sp_isEditing {
|
|
vc.setAllSelectedState(isSelected: false)
|
|
allSelectedButton.isSelected = false
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//MARK: UI属性
|
|
private lazy var pageView: JYPageController = {
|
|
let pageView = JYPageController()
|
|
pageView.delegate = self
|
|
pageView.dataSource = self
|
|
pageView.config.indicatorWidth = 20
|
|
pageView.config.indicatorHeight = 4
|
|
pageView.config.indicatorCornerRadius = 2
|
|
pageView.config.indicatorColor = .colorFFFFFF(alpha: 0.9)
|
|
pageView.config.selectedTitleColor = .colorFFFFFF(alpha: 0.9)
|
|
pageView.config.selectedTitleFont = 16
|
|
pageView.config.selectedTitleFontWeight = .medium
|
|
pageView.config.normalTitleColor = .color888888()
|
|
pageView.config.normalTitleFont = 15
|
|
pageView.config.normalTitleFontWeight = .regular
|
|
pageView.config.leftPadding = 15
|
|
pageView.config.itemsMargin = 40
|
|
return pageView
|
|
}()
|
|
|
|
private lazy var editButton: UIButton = {
|
|
let button = UIButton(type: .custom)
|
|
button.setImage(UIImage(named: "delete_icon_01"), for: .normal)
|
|
button.addTarget(self, action: #selector(handleEditButton), for: .touchUpInside)
|
|
return button
|
|
}()
|
|
|
|
private lazy var cancelButton: UIButton = {
|
|
let button = UIButton(type: .custom)
|
|
button.setTitle("Cancel".localized, for: .normal)
|
|
button.setTitleColor(.colorFFFFFF(alpha: 0.9), for: .normal)
|
|
button.titleLabel?.font = .fontRegular(ofSize: 15)
|
|
button.addTarget(self, action: #selector(handleCancelButton), for: .touchUpInside)
|
|
button.isHidden = true
|
|
return button
|
|
}()
|
|
|
|
///全选按钮
|
|
private lazy var allSelectedButton: UIButton = {
|
|
let button = JXButton(type: .custom)
|
|
button.setTitle("Select All".localized, for: .normal)
|
|
button.setTitleColor(.colorFFFFFF(alpha: 0.9), for: .normal)
|
|
button.setImage(UIImage(named: "check_icon_01"), for: .normal)
|
|
button.setImage(UIImage(named: "check_icon_01_selected"), for: .selected)
|
|
button.setImage(UIImage(named: "check_icon_01_selected"), for: [.selected, .highlighted])
|
|
button.jx_font = .fontRegular(ofSize: 15)
|
|
button.titleDirection = .right
|
|
button.space = 6
|
|
button.isHidden = true
|
|
button.addTarget(self, action: #selector(handleAllSelectedButton), for: .touchUpInside)
|
|
return button
|
|
}()
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
_setupUI()
|
|
}
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.navigationController?.setNavigationBarHidden(true, animated: true)
|
|
}
|
|
|
|
override func viewDidDisappear(_ animated: Bool) {
|
|
super.viewDidDisappear(animated)
|
|
self.sp_isEditing = false
|
|
}
|
|
|
|
@objc private func handleEditButton() {
|
|
self.sp_isEditing = true
|
|
}
|
|
|
|
@objc private func handleCancelButton() {
|
|
self.sp_isEditing = false
|
|
}
|
|
|
|
@objc private func handleAllSelectedButton() {
|
|
let vc = viewControllers[pageView.selectedIndex]
|
|
if self.allSelectedButton.isSelected {
|
|
vc.setAllSelectedState(isSelected: false)
|
|
} else {
|
|
vc.setAllSelectedState(isSelected: true)
|
|
}
|
|
}
|
|
}
|
|
|
|
extension SPMyListViewController {
|
|
private func _setupUI() {
|
|
addChild(pageView)
|
|
view.addSubview(pageView.view)
|
|
view.addSubview(editButton)
|
|
view.addSubview(cancelButton)
|
|
view.addSubview(allSelectedButton)
|
|
|
|
pageView.view.snp.makeConstraints { make in
|
|
make.edges.equalToSuperview()
|
|
}
|
|
|
|
editButton.snp.makeConstraints { make in
|
|
make.right.equalToSuperview().offset(-5)
|
|
make.top.equalToSuperview().offset(kSPStatusbarHeight + 10)
|
|
make.height.equalTo(35)
|
|
make.width.equalTo(40)
|
|
}
|
|
|
|
cancelButton.snp.makeConstraints { make in
|
|
make.top.bottom.equalTo(editButton)
|
|
make.right.equalTo(editButton)
|
|
}
|
|
|
|
allSelectedButton.snp.makeConstraints { make in
|
|
make.left.equalToSuperview().offset(15)
|
|
make.top.bottom.equalTo(editButton)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//MARK: -------------- JYPageControllerDelegate & JYPageControllerDataSource --------------
|
|
extension SPMyListViewController: JYPageControllerDelegate, JYPageControllerDataSource {
|
|
func pageController(_ pageController: JYPageController, frameForSegmentedView segmentedView: JYSegmentedView) -> CGRect {
|
|
return .init(x: 0, y: kSPStatusbarHeight + 10, width: kSPScreenWidth, height: 35)
|
|
}
|
|
|
|
func pageController(_ pageController: JYPageController, frameForContainerView container: UIScrollView) -> CGRect {
|
|
let y = kSPStatusbarHeight + 10 + 35
|
|
return .init(x: 0, y: kSPStatusbarHeight + 10 + 35, width: kSPScreenWidth, height: kSPScreenHeight - y - kSPTabBarHeight)
|
|
}
|
|
|
|
func pageController(_ pageController: JYPageController, titleAt index: Int) -> String {
|
|
return titles[index]
|
|
}
|
|
|
|
func numberOfChildControllers() -> Int {
|
|
return titles.count
|
|
}
|
|
|
|
func childController(atIndex index: Int) -> any JYPageChildContollerProtocol {
|
|
return self.viewControllers[index]
|
|
}
|
|
|
|
func pageController(_ pageController: JYPageController, didEnterControllerAt index: Int) {
|
|
if index == 0 {
|
|
self.editButton.isHidden = false
|
|
} else {
|
|
self.editButton.isHidden = true
|
|
}
|
|
}
|
|
|
|
}
|