Files
yinmeng-ios/xplan-ios/Main/Home/View/XPHomeRecommendViewController.m
2022-03-04 19:54:17 +08:00

258 lines
8.3 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// XPHomeRecommendViewController.m
// xplan-ios
//
// Created by 冯硕 on 2022/2/21.
//
#import "XPHomeRecommendViewController.h"
///Third
#import <Masonry/Masonry.h>
#import <JXPagingView/JXPagerView.h>
#import <JXPagingView/JXPagerListRefreshView.h>
#import <JXCategoryView/JXCategoryView.h>
#import <MJRefresh/MJRefresh.h>
///Tool
#import "XPMacro.h"
#import "ThemeColor.h"
#import "UIImage+Utils.h"
///View
#import "XPHomeRecommendHeaderView.h"
///P
#import "XPHomeRecommendPresenter.h"
#import "XPHomeRecommendProtocol.h"
///VC
#import "XPHomeHappyViewController.h"
#import "XPHomeHotRoomViewController.h"
@class HomeMenuInfoModel,HomeBannerInfoModel,HomeRecommendRoomModel, HomePlayRoomModel;
@interface XPHomeRecommendViewController ()<JXCategoryViewDelegate,JXPagerViewDelegate, XPHomeRecommendProtocol,JXPagerMainTableViewGestureDelegate>
@property (nonatomic, strong) JXCategoryTitleView *titleView;
@property (nonatomic, strong) JXCategoryIndicatorLineView *lineView;
@property (nonatomic, strong) JXPagerView *pagingView;
@property (nonatomic, strong) NSArray<NSString *> *titles;
///
@property (nonatomic,strong) XPHomeRecommendHeaderView *headerView;
///菜单列表
@property (nonatomic,strong) NSArray<HomeMenuInfoModel *> *menuList;
///轮播图
@property (nonatomic,strong) NSArray<HomeBannerInfoModel *> *bannerList;
///推荐房
@property (nonatomic,strong) NSArray<HomeRecommendRoomModel *> *recommendList;
///热门房
@property (nonatomic,strong) NSArray<HomeRecommendRoomModel *> *hotRoomList;
///组队开黑
@property (nonatomic,strong) NSArray<HomePlayRoomModel *> *playTeamList;
///个人房列表数据
@property (nonatomic,strong) NSArray<HomePlayRoomModel *> *personalRoomList;
///个人房
@property (nonatomic,strong) XPHomeHappyViewController *personalRoomVC;
///热门房
@property (nonatomic,strong) XPHomeHotRoomViewController *hotRoomVC;
@end
@implementation XPHomeRecommendViewController
- (XPHomeRecommendPresenter *)createPresenter {
return [[XPHomeRecommendPresenter alloc] init];
}
- (BOOL)isHiddenNavBar {
return YES;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initHeaderAndFooterRrfresh];
[self initSubViews];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.pagingView.frame = self.view.bounds;
}
#pragma mark - InitHttp
- (void)headerRefresh {
[self.presenter getHomeTopBannerList];
[self.presenter getHomeRecommendRoomList];
[self.presenter getHomeHotRoomList];
[self.presenter getPlayGameWithTeam:1];
[self.presenter getHomePersonalRoomList];
}
- (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;
[self headerRefresh];
}
#pragma mark - Private Method
- (void)initSubViews {
self.view.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.pagingView];
}
#pragma mark - XPHomeRecommendProtocol
- (void)getHomeTopBannerListSuccess:(NSArray *)list menuList:(NSArray *)list1{
[self.pagingView.mainTableView.mj_header endRefreshing];
self.bannerList = list;
self.menuList = list1;
self.headerView.bannerList = list;
self.headerView.menuList = list1;
[self.pagingView reloadData];
}
- (void)getHomeRecommendRoomListSuccess:(NSArray *)list {
[self.pagingView.mainTableView.mj_header endRefreshing];
self.recommendList= list;
self.headerView.recommendList = list;
[self.pagingView reloadData];
}
- (void)getHomeHotRoomListSuccess:(NSArray *)list {
[self.pagingView.mainTableView.mj_header endRefreshing];
self.hotRoomList = list;
self.headerView.hotRoomList = list;
[self.pagingView reloadData];
}
- (void)getHomePersonalRoomListSuccess:(NSArray *)list {
[self.pagingView.mainTableView.mj_header endRefreshing];
self.personalRoomList = list;
self.hotRoomVC.roomList = list;
}
- (void)getPlayGameWithTeamSuccess:(NSArray *)list {
[self.pagingView.mainTableView.mj_header endRefreshing];
self.playTeamList = list;
[self.personalRoomVC configPlayGameRoomList:list];
}
#pragma mark - JXCategoryListContentViewDelegate
- (UIView *)listView {
return self.view;
}
#pragma mark - JXCategoryViewDelegate
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
return [XPHomeRecommendHeaderView getHomeRecommendHeaderViewHeight:self.bannerList menuList:self.menuList recommendList:self.recommendList hotRoomList:self.hotRoomList];
}
- (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 {
UIViewController *viewController;
switch (index) {
case 0:
{
viewController = self.personalRoomVC;
}
break;
case 1:
{
viewController = self.hotRoomVC;
}
break;
}
return (id <JXPagerViewListViewDelegate>)viewController;
}
#pragma mark - JXPagerMainTableViewGestureDelegate
- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
//禁止categoryView左右滑动的时候上下和左右都可以滚动
if (otherGestureRecognizer == self.titleView.collectionView.panGestureRecognizer) {
return NO;
}
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
}
#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 fontWithName:@"PingFang-SC-Medium" size:12];
_titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16];
_titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter;
_titleView.contentScrollViewClickTransitionAnimationEnabled = NO;
_titleView.defaultSelectedIndex = 0;
_titleView.averageCellSpacingEnabled = NO;
_titleView.titles = self.titles;
_titleView.cellSpacing = 20;
_titleView.titles = self.titles;
_titleView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init];
lineView.indicatorWidth = 41;
lineView.indicatorHeight = 10;
lineView.indicatorCornerRadius = 5;
lineView.verticalMargin = 10;
lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFD15A), UIColorFromRGB(0xFFC000)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(41, 10)];
_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;
}
- (NSArray<NSString *> *)titles {
if (!_titles) {
_titles = @[@"开黑畅聊", @"热门房间"];
}
return _titles;
}
- (XPHomeRecommendHeaderView *)headerView {
if (!_headerView) {
_headerView = [[XPHomeRecommendHeaderView alloc] init];
_headerView.backgroundColor = [UIColor clearColor];
_headerView.currenViewController = self;
}
return _headerView;
}
- (XPHomeHotRoomViewController *)hotRoomVC {
if (!_hotRoomVC) {
_hotRoomVC = [[XPHomeHotRoomViewController alloc] init];
}
return _hotRoomVC;
}
- (XPHomeHappyViewController *)personalRoomVC {
if (!_personalRoomVC) {
_personalRoomVC = [[XPHomeHappyViewController alloc] init];
}
return _personalRoomVC;
}
@end