From 62a93c34459906a9d214417cce4441bf9f7c16b7 Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Thu, 21 Dec 2023 18:42:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=B4=BE=E5=AF=B9=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MewHomeView/MewMainHomeViewController.h | 16 + .../MewHomeView/MewMainHomeViewController.m | 328 ++++++++++++++++++ 2 files changed, 344 insertions(+) create mode 100644 xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.h create mode 100644 xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.m diff --git a/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.h b/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.h new file mode 100644 index 00000000..ffb2d1fe --- /dev/null +++ b/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.h @@ -0,0 +1,16 @@ +// +// MewMainViewController.h +// xplan-ios +// +// Created by duoban on 2023/12/19. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MewMainHomeViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.m b/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.m new file mode 100644 index 00000000..50bb1938 --- /dev/null +++ b/xplan-ios/Main/Home/View/Mew/MewHomeView/MewMainHomeViewController.m @@ -0,0 +1,328 @@ +// +// 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]]; //很远的过去 + } +} + +- (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 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)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 { + +} + +#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)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