228 lines
7.0 KiB
Objective-C
228 lines
7.0 KiB
Objective-C
//
|
|
// XPPartyViewController.m
|
|
// xplan-ios
|
|
//
|
|
// Created by XY on 2023/3/6.
|
|
//
|
|
|
|
#import "XPPartyViewController.h"
|
|
///Third
|
|
#import <Masonry/Masonry.h>
|
|
#import <JXCategoryView.h>
|
|
#import <JXPagerView.h>
|
|
#import <MJRefresh.h>
|
|
///Tool
|
|
#import "ThemeColor.h"
|
|
#import "XPMacro.h"
|
|
#import "XPWeakTimer.h"
|
|
#import "NSArray+Safe.h"
|
|
/// View
|
|
#import "XPPartyHeaderView.h"
|
|
/// VC
|
|
#import "XPPartyListViewController.h"
|
|
///P
|
|
#import "XPHomeContainerPresenter.h"
|
|
#import "XPHomeContainerProtocol.h"
|
|
///Model
|
|
#import "HomeTagModel.h"
|
|
|
|
@interface XPPartyViewController ()<JXCategoryViewDelegate,JXPagerViewDelegate,XPHomeContainerProtocol,XPPartyHeaderViewDelegate>
|
|
{
|
|
NSTimer * timer;
|
|
}
|
|
|
|
///分页控制器
|
|
@property (nonatomic, strong) JXCategoryTitleView *titleView;
|
|
@property (nonatomic, strong) JXPagerView *pagingView;
|
|
@property (nonatomic, strong) NSArray<NSString *> *titles;
|
|
///分页控制器头部
|
|
@property (nonatomic, strong) XPPartyHeaderView *headerView;
|
|
|
|
///tag的列表
|
|
@property (nonatomic,copy) NSArray<HomeTagModel *> *tagList;
|
|
|
|
@end
|
|
|
|
@implementation XPPartyViewController
|
|
|
|
- (XPHomeContainerPresenter *)createPresenter {
|
|
return [[XPHomeContainerPresenter alloc] init];
|
|
}
|
|
|
|
- (BOOL)isHiddenNavBar {
|
|
return YES;
|
|
}
|
|
|
|
- (void)viewDidLoad {
|
|
[super viewDidLoad];
|
|
[self initSubViews];
|
|
[self addTimer];
|
|
[self initHeaderAndFooterRrfresh];
|
|
|
|
/// 测试数据
|
|
HomeBannerInfoModel *model = [[HomeBannerInfoModel alloc] init];
|
|
model.bannerPic = @"http://img.uat.lecheng163.com/Fk4qijdmBCqkcIsNtCpVuML2Dahq?imageslim";
|
|
self.headerView.bannerList = @[model];
|
|
|
|
}
|
|
|
|
- (void)viewWillAppear:(BOOL)animated {
|
|
[super viewWillAppear:animated];
|
|
if (timer) {
|
|
[timer setFireDate:[NSDate distantPast]]; //很远的过去
|
|
}
|
|
}
|
|
|
|
- (void)viewWillDisappear:(BOOL)animated {
|
|
[super viewWillDisappear:animated];
|
|
if (timer) {
|
|
//关闭定时器
|
|
[timer setFireDate:[NSDate distantFuture]]; //很远的将来
|
|
}
|
|
}
|
|
|
|
- (void)addTimer {
|
|
timer = [XPWeakTimer scheduledTimerWithTimeInterval:15 block:^(id userInfo) {
|
|
[self headerRefresh];
|
|
} userInfo:nil repeats:YES];
|
|
}
|
|
|
|
#pragma mark - InitHttp
|
|
- (void)headerRefresh {
|
|
[self.presenter getHomeTagList];
|
|
}
|
|
|
|
- (void)initHeaderAndFooterRrfresh {
|
|
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
|
|
header.stateLabel.font = [UIFont systemFontOfSize:10.0];
|
|
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0];
|
|
header.stateLabel.textColor = [ThemeColor secondTextColor];
|
|
header.lastUpdatedTimeLabel.textColor = [ThemeColor secondTextColor];
|
|
self.pagingView.mainTableView.mj_header = header;
|
|
}
|
|
|
|
#pragma mark - Private Method
|
|
- (void)initSubViews {
|
|
[self.view addSubview:self.pagingView];
|
|
|
|
}
|
|
|
|
- (void)viewDidLayoutSubviews {
|
|
[super viewDidLayoutSubviews];
|
|
CGRect frame = self.view.bounds;
|
|
frame.origin.y = kStatusBarHeight;
|
|
frame.size.height = frame.size.height - frame.origin.y;
|
|
self.pagingView.frame = frame;
|
|
}
|
|
|
|
#pragma mark - XPHomeContainerProtocol
|
|
- (void)getHomeTagListSuccess:(NSArray<HomeTagModel *> *)array {
|
|
[self.pagingView.mainTableView.mj_header endRefreshing];
|
|
NSMutableArray<HomeTagModel *> *tempArr = [array mutableCopy];
|
|
if (tempArr.count > 0 && [tempArr.firstObject.name isEqualToString:@"喜欢"]) {
|
|
HomeTagModel *recommend = [[HomeTagModel alloc] init];
|
|
recommend.name = @"推荐";
|
|
recommend.tid = @"recommend";
|
|
[tempArr replaceObjectAtIndex:0 withObject:recommend];
|
|
}
|
|
self.tagList = tempArr;
|
|
NSMutableArray * titles = [NSMutableArray array];
|
|
[self.tagList enumerateObjectsUsingBlock:^(HomeTagModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
if (obj.name.length > 0) {
|
|
[titles addObject:obj.name];
|
|
}
|
|
}];
|
|
self.titles = titles.copy;
|
|
self.titleView.titles = self.titles;
|
|
[self.titleView reloadData];
|
|
}
|
|
|
|
#pragma mark - XPPartyHeaderViewDelegate
|
|
/// 点击banner
|
|
- (void)partyHeaderViewClickBanner:(HomeBannerInfoModel *)banner {
|
|
|
|
}
|
|
|
|
|
|
#pragma mark - JXCategoryViewDelegate
|
|
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
|
|
return [XPPartyHeaderView getPartyHeaderViewHeight];
|
|
}
|
|
|
|
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
|
return self.headerView;
|
|
}
|
|
|
|
- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
|
|
return 50;
|
|
}
|
|
|
|
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
|
|
return self.titleView;
|
|
}
|
|
|
|
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
|
|
return self.titles.count;
|
|
}
|
|
|
|
- (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
|
|
XPPartyListViewController *listVC = [[XPPartyListViewController alloc] init];
|
|
HomeTagModel *tag = [self.tagList safeObjectAtIndex1:index];
|
|
listVC.tabId = tag.tid;
|
|
return (id <JXPagerViewListViewDelegate>)listVC;
|
|
}
|
|
|
|
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
|
|
|
|
|
}
|
|
|
|
#pragma mark - Getters And Setters
|
|
|
|
- (JXCategoryTitleView *)titleView {
|
|
if (!_titleView) {
|
|
_titleView = [[JXCategoryTitleView alloc] init];
|
|
_titleView.delegate = self;
|
|
_titleView.backgroundColor = [UIColor clearColor];
|
|
_titleView.titleColor = [ThemeColor textThirdColor];
|
|
_titleView.titleSelectedColor = [ThemeColor mainTextColor];
|
|
_titleView.titleFont = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
|
|
_titleView.titleSelectedFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold];
|
|
_titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter;
|
|
_titleView.contentScrollViewClickTransitionAnimationEnabled = NO;
|
|
_titleView.defaultSelectedIndex = 0;
|
|
_titleView.averageCellSpacingEnabled = NO;
|
|
_titleView.titles = self.titles;
|
|
_titleView.cellSpacing = 20;
|
|
_titleView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
|
|
|
|
JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init];
|
|
lineView.indicatorImageViewSize = CGSizeMake(13, 4);
|
|
lineView.verticalMargin = 5;
|
|
lineView.indicatorImageView.image = [UIImage imageNamed:@"home_segment_indicator"];
|
|
_titleView.indicators = @[lineView];
|
|
}
|
|
return _titleView;
|
|
}
|
|
|
|
- (JXPagerView *)pagingView {
|
|
if (!_pagingView) {
|
|
_pagingView = [[JXPagerView alloc] initWithDelegate:self];
|
|
_pagingView.backgroundColor = [UIColor clearColor];
|
|
_pagingView.listContainerView.backgroundColor = [UIColor clearColor];
|
|
_pagingView.mainTableView.backgroundColor = [UIColor clearColor];
|
|
_pagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor;
|
|
}
|
|
return _pagingView;
|
|
}
|
|
|
|
- (XPPartyHeaderView *)headerView {
|
|
if (!_headerView) {
|
|
_headerView = [[XPPartyHeaderView alloc] init];
|
|
_headerView.delegate = self;
|
|
}
|
|
return _headerView;
|
|
}
|
|
|
|
@end
|