// // MewMainViewController.m // xplan-ios // // Created by duoban on 2023/12/19. // #import "MewMainHomeViewController.h" #import #import #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 () { 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 *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]]; //很远的过去 } [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_show]; } - (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 { MewRefreshSvgaHeader *header = [MewRefreshSvgaHeader headerWithRefreshingTarget:self refreshingAction:@selector(mew_headerRefresh)]; 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)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { UIViewController *viewController; if (index == 0) { viewController = self.mewPartyVC; }else{ viewController = self.mewMakeFriendVC; } return (id )viewController; } - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_tab_click eventAttributes:index == 0 ? @{@"type" : @"1"}:@{@"type" : @"2"}]; } #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 || otherGestureRecognizer.view.tag == 4999) { return NO; } return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; } #pragma mark- MewMainHomeNavViewDelegate ///点击了搜索房间 - (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickSearch:(UIView *_Nullable)sender{ [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_search_click]; 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{ [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_rank_click]; 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{ [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_myroom_click]; 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 == 2){ _mewTopTitleView.defaultSelectedIndex = 1; }else{ _mewTopTitleView.defaultSelectedIndex = 0; } _mewTopTitleView.averageCellSpacingEnabled = NO; _mewTopTitleView.titles = self.mewTitleList; _mewTopTitleView.cellSpacing = 20; _mewTopTitleView.listContainer = (id)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 *)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