118 lines
3.1 KiB
Swift
118 lines
3.1 KiB
Swift
//
|
|
// FAMeViewController.swift
|
|
// Fableon
|
|
//
|
|
// Created by 湖北秦九 on 2025/9/29.
|
|
//
|
|
|
|
import UIKit
|
|
import YYText
|
|
import JXSegmentedView
|
|
import JXPagingView
|
|
|
|
class FAMeViewController: FAViewController {
|
|
|
|
private lazy var headerView: FAMeHeaderView = {
|
|
let view = FAMeHeaderView()
|
|
view.userInfo = FALogin.manager.userInfo
|
|
return view
|
|
}()
|
|
|
|
private lazy var listView: FAMeListViewController = FAMeListViewController()
|
|
|
|
private lazy var segmentedView: JXSegmentedView = {
|
|
let view = JXSegmentedView()
|
|
return view
|
|
}()
|
|
|
|
private lazy var pagingView: JXPagingView = {
|
|
let view = JXPagingView(delegate: self)
|
|
view.mainTableView.backgroundColor = .clear
|
|
view.listContainerView.backgroundColor = .clear
|
|
view.listContainerView.listCellBackgroundColor = .clear
|
|
view.mainTableView.fa_addRefreshHeader(insetTop: 0) { [weak self] in
|
|
self?.handleHeaderRefresh(nil)
|
|
}
|
|
return view
|
|
}()
|
|
|
|
|
|
deinit {
|
|
NotificationCenter.default.removeObserver(self)
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
NotificationCenter.default.addObserver(self, selector: #selector(userInfoUpdateNotification), name: FALogin.userInfoUpdateNotification, object: nil)
|
|
|
|
|
|
|
|
fa_setupLayout()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.navigationController?.setNavigationBarHidden(true, animated: true)
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
FALogin.manager.requestUserInfo(completer: nil)
|
|
}
|
|
|
|
override func handleHeaderRefresh(_ completer: (() -> Void)?) {
|
|
FALogin.manager.requestUserInfo { [weak self] in
|
|
self?.pagingView.mainTableView.fa_endHeaderRefreshing()
|
|
}
|
|
}
|
|
|
|
@objc private func userInfoUpdateNotification() {
|
|
headerView.userInfo = FALogin.manager.userInfo
|
|
}
|
|
|
|
}
|
|
|
|
extension FAMeViewController {
|
|
|
|
private func fa_setupLayout() {
|
|
view.addSubview(pagingView)
|
|
|
|
pagingView.snp.makeConstraints { make in
|
|
make.left.right.bottom.equalToSuperview()
|
|
make.top.equalToSuperview().offset(UIScreen.safeTop)
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//MARK: JXPagingViewDelegate
|
|
extension FAMeViewController: JXPagingViewDelegate {
|
|
|
|
func pagingView(_ pagingView: JXPagingView, initListAtIndex index: Int) -> any JXPagingViewListViewDelegate {
|
|
return listView
|
|
}
|
|
|
|
func tableHeaderViewHeight(in pagingView: JXPagingView) -> Int {
|
|
return Int(ceil(headerView.contentHeight))
|
|
}
|
|
|
|
func tableHeaderView(in pagingView: JXPagingView) -> UIView {
|
|
return headerView
|
|
}
|
|
|
|
func heightForPinSectionHeader(in pagingView: JXPagingView) -> Int {
|
|
return 0
|
|
}
|
|
|
|
func viewForPinSectionHeader(in pagingView: JXPagingView) -> UIView {
|
|
return UIView()
|
|
}
|
|
|
|
func numberOfLists(in pagingView: JXPagingView) -> Int {
|
|
return 1
|
|
}
|
|
}
|
|
|