Files
yinmeng-ios/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.m
2023-12-26 14:29:53 +08:00

330 lines
12 KiB
Objective-C

//
// MewMainViewController.m
// xplan-ios
//
// Created by duoban on 2023/12/19.
//
#import "MewMainHomeViewController.h"
#import <JXCategoryView.h>
#import <JXPagerView.h>
#import "MewMainHomeNavView.h"
#import "MewMainHomePartyVC.h"
#import "MewMainHomeMakeFriendVC.h"
#import "XPRoomSearchContainerViewController.h"
#import "ClientConfig.h"
#import "XPWebViewController.h"
#import "Api+Room.h"
#import "XPRoomViewController.h"
#import "XPLittleGameRoomOpenView.h"
#import "XPTeenagerHomeView.h"
#import "XPWeakTimer.h"
@interface MewMainHomeViewController ()<MewMainHomePartyVCDelegate,MewMainHomeMakeFriendVCDelegate,MewMainHomeNavViewDelegate,JXCategoryViewDelegate,JXPagerViewDelegate,JXPagerMainTableViewGestureDelegate>
{
NSTimer * _mewTimer;
}
@property (nonatomic, strong) UIStackView *mewStackView;
///背景图片
@property(nonatomic,strong) UIImageView *mewBgImageView;
///导航栏
@property(nonatomic,strong) MewMainHomeNavView *mewMainHomeNavView;
///分页控制器
@property (nonatomic, strong) JXCategoryTitleView *mewTopTitleView;
@property (nonatomic, strong) JXPagerView *mewPagingView;
@property (nonatomic, strong) NSArray<NSString *> *mewTitleList;
///派对
@property(nonatomic,strong) MewMainHomePartyVC *mewPartyVC;
///交友
@property(nonatomic,strong) MewMainHomeMakeFriendVC *mewMakeFriendVC;
///青少年空白view
@property (nonatomic, strong) XPTeenagerHomeView *mewTeenagerView;
@end
@implementation MewMainHomeViewController
@synthesize parentMode = _parentMode;
- (void)setParentMode:(BOOL)parentMode {
_parentMode = parentMode;
if (parentMode) {
if (!self.mewTeenagerView.superview) {
[self.view addSubview:self.mewTeenagerView];
[self.mewTeenagerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.view);
}];
}
} else {
[self.mewTeenagerView removeFromSuperview];
}
}
- (BOOL)isHiddenNavBar {
return YES;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (_mewTimer) {
[_mewTimer setFireDate:[NSDate distantPast]]; //很远的过去
}
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (_mewTimer) {
//关闭定时器
[_mewTimer setFireDate:[NSDate distantFuture]]; //很远的将来
}
}
- (void)viewDidLoad {
[super viewDidLoad];
[self installUI];
[self installConstraints];
[self initHeaderAndFooterRrfresh];
[self addTimer];
}
- (void)addTimer {
_mewTimer = [XPWeakTimer scheduledTimerWithTimeInterval:15 block:^(id userInfo) {
[self timeRefresh];
} userInfo:nil repeats:YES];
}
- (void)timeRefresh {
if (_parentMode) return;
[self mew_headerRefresh];
}
-(void)installUI{
self.view.backgroundColor = UIColorFromRGB(0xF5F5F7);
[self.view addSubview:self.mewBgImageView];
[self.view addSubview:self.mewStackView];
[self.view addSubview:self.mewPagingView];
[self.mewStackView addArrangedSubview:self.mewTopTitleView];
[self.mewStackView addArrangedSubview:self.mewMainHomeNavView];
}
-(void)installConstraints{
[self.mewBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.equalTo(self.view);
make.height.mas_equalTo(kGetScaleWidth(250));
}];
[self.mewStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(0);
make.top.mas_equalTo(kStatusBarHeight);
make.top.mas_equalTo(44);
}];
[self.mewMainHomeNavView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(232);
make.height.mas_equalTo(30);
}];
[self.mewPagingView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.left.right.equalTo(self.view);
make.top.equalTo(self.mewStackView.mas_bottom).mas_offset(kGetScaleWidth(0));
}];
[self.mewTopTitleView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(44);
}];
}
- (void)initHeaderAndFooterRrfresh {
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(mew_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.mewPagingView.mainTableView.mj_header = header;
}
-(void)mew_headerRefresh{
if(self.mewTopTitleView.selectedIndex == 1){
[self.mewMakeFriendVC headerRefresh];
}else{
[self.mewPartyVC headerRefresh];
}
}
#pragma mark - JXCategoryViewDelegate
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
return 0;
}
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
return [UIView new];
}
- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return 0;
}
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return [UIView new];
}
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
return self.mewTitleList.count;
}
- (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
UIViewController *viewController;
if (index == 0) {
viewController = self.mewPartyVC;
}else{
viewController = self.mewMakeFriendVC;
}
return (id <JXPagerViewListViewDelegate>)viewController;
}
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
}
#pragma mark - JXPagerMainTableViewGestureDelegate
- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
///1000是外部的scrollView 1001是人气主播中的collectionView 9999是 开黑畅聊的轮播图
if (otherGestureRecognizer.view.tag == 1000 || otherGestureRecognizer.view.tag == 1001 || otherGestureRecognizer.view.tag == 9999) {
return NO;
}
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
}
#pragma mark- MewMainHomeNavViewDelegate
///点击了搜索房间
- (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickSearch:(UIView *_Nullable)sender{
XPRoomSearchContainerViewController * searchVC = [[XPRoomSearchContainerViewController alloc] init];
searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:searchVC animated:YES completion:nil];
}
///点击了榜单按钮
- (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickRank:(UIButton *_Nullable)sender{
NSString *url = @"";
if([ClientConfig shareConfig].configInfo.h5Uris.count > 0){
for (XPClientH5UresModel *h5Model in [ClientConfig shareConfig].configInfo.h5Uris) {
if([h5Model.code isEqualToString:@"rank"]){
url = h5Model.uri;
break;;
}
}
}
XPWebViewController * webVC =[[XPWebViewController alloc] init];
webVC.url = url.length > 0 ? url : URLWithType(kHomeRankURL);
[self.navigationController pushViewController:webVC animated:YES];
}
///点击了我的房间
- (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickRoom:(UIButton *_Nullable)sender{
NSString* roomUid = [AccountInfoStorage instance].getUid;
[Api getRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if (code == 200) {
RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data];
if (roomInfo.isReselect) {
XPLittleGameRoomOpenView * roomOpenView = [[XPLittleGameRoomOpenView alloc] init];
roomOpenView.roomInfo = roomInfo;
roomOpenView.currentVC = self;
[TTPopup popupView:roomOpenView style:TTPopupStyleActionSheet];
} else {
[XPRoomViewController openRoom:roomUid viewController:self];
}
} else {
[self showErrorToast:msg];
}
} uid:roomUid intoUid:roomUid];
}
#pragma mark - MewMainHomePartyVCDelegate
-(void)mew_RefreshSucceed:(MewMainHomePartyVC *)vc{
[self.mewPagingView.mainTableView.mj_header endRefreshing];
}
#pragma mark - MewMainHomeMakeFriendVCDelegate
-(void)mew_RefreshDataSucceed:(MewMainHomeMakeFriendVC*)VC{
[self.mewPagingView.mainTableView.mj_header endRefreshing];
}
#pragma mark - 懒加载
- (UIImageView *)mewBgImageView{
if(!_mewBgImageView){
_mewBgImageView = [UIImageView new];
_mewBgImageView.image = kImage(@"mew_home_top_bg_image");
}
return _mewBgImageView;
}
- (MewMainHomeNavView *)mewMainHomeNavView{
if(!_mewMainHomeNavView){
_mewMainHomeNavView = [[MewMainHomeNavView alloc]initWithFrame:CGRectZero];
_mewMainHomeNavView.delegate = self;
}
return _mewMainHomeNavView;
}
- (JXCategoryTitleView *)mewTopTitleView {
if (!_mewTopTitleView) {
_mewTopTitleView = [[JXCategoryTitleView alloc] init];
_mewTopTitleView.delegate = self;
_mewTopTitleView.backgroundColor = [UIColor clearColor];
_mewTopTitleView.titleColor = UIColorFromRGB(0x696D7A);
_mewTopTitleView.titleSelectedColor = UIColorFromRGB(0x2B2D33);
_mewTopTitleView.titleFont = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
_mewTopTitleView.titleSelectedFont = [UIFont systemFontOfSize:20 weight:UIFontWeightSemibold];
_mewTopTitleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter;
_mewTopTitleView.contentScrollViewClickTransitionAnimationEnabled = NO;
if([ClientConfig shareConfig].defaultTab.intValue == 1){
_mewTopTitleView.defaultSelectedIndex = 1;
}else{
_mewTopTitleView.defaultSelectedIndex = 0;
}
_mewTopTitleView.averageCellSpacingEnabled = NO;
_mewTopTitleView.titles = self.mewTitleList;
_mewTopTitleView.cellSpacing = 20;
_mewTopTitleView.listContainer = (id<JXCategoryViewListContainer>)self.mewPagingView.listContainerView;
JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init];
lineView.indicatorImageViewSize = CGSizeMake(54, 28);
lineView.verticalMargin = 8;
lineView.indicatorImageView.image = [UIImage imageNamed:@"mew_home_top_choose_icon"];
_mewTopTitleView.indicators = @[lineView];
}
return _mewTopTitleView;
}
- (JXPagerView *)mewPagingView {
if (!_mewPagingView) {
_mewPagingView = [[JXPagerView alloc] initWithDelegate:self];
_mewPagingView.backgroundColor = [UIColor clearColor];
_mewPagingView.listContainerView.backgroundColor = [UIColor clearColor];
_mewPagingView.mainTableView.backgroundColor = [UIColor clearColor];
_mewPagingView.mainTableView.gestureDelegate = self;
_mewPagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor;
}
return _mewPagingView;
}
- (NSArray<NSString *> *)mewTitleList {
if (!_mewTitleList) {
_mewTitleList = @[@"派对", @"交友"];
}
return _mewTitleList;
}
- (UIStackView *)mewStackView {
if (!_mewStackView) {
_mewStackView = [[UIStackView alloc] init];
_mewStackView.axis = UILayoutConstraintAxisHorizontal;
_mewStackView.distribution = UIStackViewDistributionFill;
_mewStackView.alignment = UIStackViewAlignmentCenter;
_mewStackView.spacing = 6;
}
return _mewStackView;
}
- (MewMainHomePartyVC *)mewPartyVC{
if(!_mewPartyVC){
_mewPartyVC = [MewMainHomePartyVC new];
_mewPartyVC.delegate = self;
}
return _mewPartyVC;
}
- (MewMainHomeMakeFriendVC *)mewMakeFriendVC{
if(!_mewMakeFriendVC){
_mewMakeFriendVC = [MewMainHomeMakeFriendVC new];
_mewMakeFriendVC.delegate = self;
}
return _mewMakeFriendVC;
}
@end