// // XPMonentTopicContainerViewController.m // xplan-ios // // Created by 冯硕 on 2022/8/18. // #import "XPMonentTopicContainerViewController.h" ///Third #import #import #import #import ///Tool #import "ThemeColor.h" #import "XPMacro.h" #import "Api+Monents.h" #import "AccountInfoStorage.h" ///Model #import "MonentsTopicModel.h" ///View #import "XPMonentsTopicRecommondViewController.h" #import "XPMonentsTopicLatestViewController.h" #import "XPMonentsTopicHeaderView.h" #import "XPMonentsPublishViewController.h" @interface XPMonentTopicContainerViewController () @property (nonatomic,strong) JXCategoryTitleView *categoryView; @property (nonatomic,strong) JXCategoryIndicatorLineView *lineView; @property (nonatomic,strong) JXPagerListRefreshView *pagerView; @property (nonatomic,strong) NSArray *titles; @property (nonatomic,strong) XPMonentsTopicRecommondViewController *recommendVC; @property (nonatomic,strong) XPMonentsTopicLatestViewController *latestVC; @property (nonatomic,strong) XPMonentsTopicHeaderView *headerView; @property (nonatomic,strong) UIButton *backButton; @property (nonatomic,strong) UIButton *enterTopicButton; @property (nonatomic,strong) MonentsTopicModel *topicInfo; @end @implementation XPMonentTopicContainerViewController - (BOOL)isHiddenNavBar { return YES; } - (void)viewDidLoad { [super viewDidLoad]; [self requestTopicDetail]; [self initSubViews]; } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.pagerView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight - 50); } - (void)initSubViews { [self.view addSubview:self.pagerView]; [self.view addSubview:self.backButton]; [self.view addSubview:self.enterTopicButton]; [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.view); make.top.mas_equalTo(statusbarHeight); make.height.width.mas_equalTo(44); }]; [self.enterTopicButton mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(50); make.left.right.bottom.mas_equalTo(self.view); }]; } - (void)requestTopicDetail { NSString * uid = [AccountInfoStorage instance].getUid; [Api monentsTopicDetailInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { MonentsTopicModel * info = [MonentsTopicModel modelWithDictionary:data.data]; self.topicInfo = info; self.headerView.topicInfo = info; } else if(code == 7903) { [self.navigationController popViewControllerAnimated:YES]; } else { [self showErrorToast:msg]; } } worldId:self.worldId uid:uid]; } #pragma mark - JXPagerViewDelegate - (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { return self.headerView; } - (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { return 150 + kNavigationHeight; } - (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { return 46; } - (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { return self.categoryView; } - (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { return self.titles.count; } - (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { if (index == 0) { return self.recommendVC; } else { return self.latestVC; } } #pragma mark - Event Response - (void)backButtonAction:(UIButton *)sender { [self.navigationController popViewControllerAnimated:YES]; } - (void)enterTopicButtonAction:(UIButton *)sender { XPMonentsPublishViewController * publishVC = [[XPMonentsPublishViewController alloc] init]; self.topicInfo.worldName = self.topicInfo.name; self.topicInfo.worldId = self.topicInfo.tId; publishVC.topicInfo = self.topicInfo; [self.navigationController pushViewController:publishVC animated:YES]; } #pragma mark - Getters And Setters - (void)setWorldId:(NSString *)worldId { _worldId = worldId; self.recommendVC.worldId = _worldId; self.latestVC.worldId = _worldId; } - (JXCategoryTitleView *)categoryView { if (!_categoryView) { _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 46)]; _categoryView.titles = self.titles; _categoryView.backgroundColor = [UIColor whiteColor]; _categoryView.delegate = self; _categoryView.titleSelectedColor = [ThemeColor mainTextColor]; _categoryView.titleColor = [ThemeColor secondTextColor]; _categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:18]; _categoryView.titleFont = [UIFont systemFontOfSize:15]; _categoryView.titleColorGradientEnabled = YES; _categoryView.titleLabelZoomEnabled = NO; _categoryView.indicators = @[self.lineView]; _categoryView.listContainer = (id)self.pagerView.listContainerView; _categoryView.averageCellSpacingEnabled = NO; _categoryView.contentEdgeInsetLeft = 20; _categoryView.contentEdgeInsetRight = 20; _categoryView.cellSpacing = 30; } return _categoryView; } - (JXCategoryIndicatorLineView *)lineView { if (!_lineView) { _lineView = [[JXCategoryIndicatorLineView alloc] init]; _lineView.indicatorColor = [ThemeColor appMainColor]; _lineView.indicatorWidth = 9; _lineView.indicatorHeight = 4; _lineView.verticalMargin = 2; } return _lineView; } - (JXPagerListRefreshView *)pagerView { if (!_pagerView) { _pagerView = [[JXPagerListRefreshView alloc] initWithDelegate:self]; _pagerView.listContainerView.scrollView.backgroundColor = UIColor.clearColor; _pagerView.pinSectionHeaderVerticalOffset = (NSInteger) kNavigationHeight; } return _pagerView; } - (NSArray *)titles { if (!_titles) { _titles = @[@"推荐", @"最新"]; } return _titles; } - (XPMonentsTopicHeaderView *)headerView { if (!_headerView) { _headerView = [[XPMonentsTopicHeaderView alloc] init]; } return _headerView; } - (XPMonentsTopicLatestViewController *)latestVC { if (!_latestVC) { _latestVC = [[XPMonentsTopicLatestViewController alloc] init]; } return _latestVC; } - (XPMonentsTopicRecommondViewController *)recommendVC { if (!_recommendVC) { _recommendVC = [[XPMonentsTopicRecommondViewController alloc] init]; } return _recommendVC; } - (UIButton *)backButton { if (!_backButton) { _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _backButton; } - (UIButton *)enterTopicButton { if (!_enterTopicButton) { _enterTopicButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_enterTopicButton setTitle:@"参与话题" forState:UIControlStateNormal]; [_enterTopicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; _enterTopicButton.titleLabel.font = [UIFont systemFontOfSize:15]; [_enterTopicButton setBackgroundColor:[ThemeColor appMainColor]]; [_enterTopicButton setImage:[UIImage imageNamed:@"monents_topic_camera"] forState:UIControlStateNormal]; [_enterTopicButton addTarget:self action:@selector(enterTopicButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _enterTopicButton; } @end