Files
featherVoice/QXLive/Mine(音域)/Controller/个人主页/QXUserHomePageViewController.m

187 lines
7.9 KiB
Objective-C

//
// QXUserHomePageViewController.m
// QXLive
//
// Created by 启星 on 2025/5/12.
//
#import "QXUserHomePageViewController.h"
#import "QXUserHomeHeaderView.h"
#import <JXPagingView/JXPagerView.h>
#import <JXCategoryView/JXCategoryView.h>
#import "QXUserDynamicView.h"
#import "QXUserGiftWallView.h"
#import "QXUserPhotosView.h"
#import <SDCycleScrollView/SDCycleScrollView.h>
#import "QXCreatPhotosViewController.h"
#import "QXMineNetwork.h"
#import "QXPhotosDetailVC.h"
@interface QXUserHomePageViewController ()<JXCategoryViewDelegate,JXPagerViewDelegate,SDCycleScrollViewDelegate>
@property (nonatomic,strong)UIImageView * backgourdImageView;
@property (nonatomic,strong)SDCycleScrollView * cycleScrollView;
@property (nonatomic,strong)UIButton *backBtn;
@property (nonatomic,strong)QXUserHomeHeaderView *headerView;
@property (nonatomic, strong) JXPagerView *pagingView;
@property (nonatomic, strong) UIView *sectionView;
@property (nonatomic, strong) JXCategoryTitleView *categoryView;
@property (nonatomic, strong) NSArray <NSString *> *titles;
@property (nonatomic, assign)CGRect cycleScrollViewFrame;
@end
@implementation QXUserHomePageViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
-(void)setNavgationItems{
[super setNavgationItems];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
}
- (void)initSubViews{
self.cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 0, self.view.width, 121+NavContentHeight+16) delegate:self placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill;
self.cycleScrollView.imageURLStringsGroup = @[@"user_header_placehoulder"];
self.cycleScrollView.backgroundColor = QXConfig.themeColor;
[self.view addSubview:self.cycleScrollView];
self.backgourdImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.backgourdImageView.contentMode = UIViewContentModeScaleAspectFill;
self.backgourdImageView.frame = CGRectMake(0, 0, self.view.width, 121+NavContentHeight+16);
self.cycleScrollViewFrame = self.backgourdImageView.frame;
[self.view addSubview:self.backgourdImageView];
self.titles = @[QXText(@"动态"),QXText(@"礼物墙"),QXText(@"我的相册")];
_categoryView = [[JXCategoryTitleView alloc] init];
self.categoryView.frame = CGRectMake(0, 0, 200, 48);
self.categoryView.titles = self.titles;
self.categoryView.delegate = self;
self.categoryView.titleSelectedColor = QXConfig.textColor;
self.categoryView.titleColor = RGB16(0x666666);
self.categoryView.titleFont = [UIFont boldSystemFontOfSize:12];
self.categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:16];
self.categoryView.titleColorGradientEnabled = YES;
self.categoryView.titleLabelZoomEnabled = YES;
self.categoryView.cellWidth = JXCategoryViewAutomaticDimension;
self.categoryView.cellSpacing = 12;
if (self.isGiftWall) {
self.categoryView.defaultSelectedIndex = 1;
}
self.categoryView.backgroundColor = [UIColor clearColor];
JXCategoryIndicatorImageView *indicatorView = [[JXCategoryIndicatorImageView alloc] init];
indicatorView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
indicatorView.indicatorImageViewSize = CGSizeMake(30, 8);
indicatorView.verticalMargin = 11;
self.categoryView.indicators = @[indicatorView];
self.sectionView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 48)];
self.sectionView.backgroundColor = RGB16(0xf6f6f6);
[self.sectionView addSubview:self.categoryView];
_pagingView = [[JXPagerView alloc] initWithDelegate:self];
_pagingView.mainTableView.backgroundColor = [UIColor clearColor];
self.pagingView.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.pagingView];
self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0);
// self.backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, kSafeAreaTop, 40, 40)];
// [self.backBtn setImage:[UIImage imageNamed:@"back"] forState:(UIControlStateNormal)];
// [self.backBtn addTarget:self action:@selector(backAction) forControlEvents:(UIControlEventTouchUpInside)];
// [self.view addSubview:self.backBtn];
[self getUserInfo];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.pagingView.frame = CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight);
}
-(void)getUserInfo{
MJWeakSelf
[QXMineNetwork userHomePageWithUserId:self.user_id successBlock:^(QXUserHomeModel * _Nonnull userModel) {
weakSelf.headerView.model = userModel;
NSArray *imgs;
if (userModel.home_bgimages.length > 0) {
imgs = [userModel.home_bgimages componentsSeparatedByString:@","];
}
if (imgs.count == 0) {
weakSelf.backgourdImageView.hidden = NO;
[weakSelf.backgourdImageView sd_setImageWithURL:[NSURL URLWithString:userModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
weakSelf.cycleScrollView.hidden = YES;
}else if(imgs.count == 1){
weakSelf.backgourdImageView.hidden = NO;
[weakSelf.backgourdImageView sd_setImageWithURL:[NSURL URLWithString:imgs.firstObject] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
weakSelf.cycleScrollView.hidden = YES;
}else{
weakSelf.cycleScrollView.hidden = NO;
weakSelf.backgourdImageView.hidden = YES;
weakSelf.cycleScrollView.imageURLStringsGroup = imgs;
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
#pragma mark - JXPagingViewDelegate
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
return self.headerView;
}
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
return 215+26;
}
- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return 48;
}
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return self.sectionView;
}
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
return self.titles.count;
}
- (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
if (index == 0) {
QXUserDynamicView *dynamicView = [[QXUserDynamicView alloc] init];
dynamicView.user_id = self.user_id;
dynamicView.backgroundColor = RGB16(0xf6f6f6);
return dynamicView;
}else if(index == 1){
QXUserGiftWallView *giftWallView = [[QXUserGiftWallView alloc] init];
giftWallView.backgroundColor = RGB16(0xf6f6f6);
giftWallView.user_id = self.user_id;
return giftWallView;
}else{
QXUserPhotosView *photosView = [[QXUserPhotosView alloc] init];
photosView.user_id = self.user_id;
photosView.backgroundColor = RGB16(0xf6f6f6);
return photosView;
}
}
-(void)pagerView:(JXPagerView *)pagerView mainTableViewDidScroll:(UIScrollView *)scrollView{
CGFloat contentOffsetY = scrollView.contentOffset.y;
if (contentOffsetY > 0) {
return;
}
CGRect frame = self.cycleScrollViewFrame;
frame.size.height -= contentOffsetY;
// frame.origin.y = contentOffsetY;
self.backgourdImageView.frame = frame;
}
-(QXUserHomeHeaderView *)headerView{
if (!_headerView) {
_headerView = [[QXUserHomeHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 215+26)];
}
return _headerView;
}
@end