| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508 |
- //
- // ShopMallVC.m
- // YBLive
- //
- // Created by ybRRR on 2020/8/18.
- // Copyright © 2020 cat. All rights reserved.
- //
- #import "ShopMallVC.h"
- #import "HXSearchBar.h"
- #import "ShopMallCell.h"
- #import "SDCycleScrollView.h"
- #import "ShopMallClassView.h"
- #import "ShopMallDetailVC.h"
- #import "ShopMallSearchVC.h"
- #import "OutsideGoodsDetailVC.h"
- #import "CommodityDetailVC.h"
- //#import "ZYTabBar.h"
- #import "YBShopLayout.h"
- //#import "MyCollectionVC.h"
- #import "ShopHomeVC.h"
- @interface ShopMallVC ()<UISearchBarDelegate,UICollectionViewDelegate,UICollectionViewDataSource,SDCycleScrollViewDelegate,mallClassDelegate,YBShopLayoutDeleaget>
- {
- HXSearchBar *searchBars;
- UIView *collectionHeaderView;
- UIView *noDataView;
- int page;
-
- CGFloat lastContentOffset;
-
- UIView *youngView;
- }
- @property(nonatomic,strong)UICollectionView *collectionView;
- @property(nonatomic,strong)NSMutableArray *infoArray;
- @property(nonatomic,strong)NSArray *CarouselArray;//轮播图
- @property(nonatomic,strong)NSArray *classArray;//轮播图
- @property(nonatomic,strong)NSString *shop_switch;//是否开通店铺
- @property (nonatomic,strong) SDCycleScrollView *cycleScroll;
- @property (nonatomic,strong)ShopMallClassView *mallClassView;
- @property (nonatomic,strong)YBShopLayout *flow;
- @end
- @implementation ShopMallVC
- #pragma mark--------网络请求-------------
- -(void)pullInternet{
-
- [YBNetworking postWithUrl:@"Home.getShopList" Dic:@{@"p":@(page)} Suc:^(int code, id info, NSString *msg) {
- [_collectionView.mj_header endRefreshing];
- [_collectionView.mj_footer endRefreshing];
- if (code == 0) {
- NSArray *infoA = [info objectAtIndex:0];
- NSArray *list = [infoA valueForKey:@"list"];
- if (page == 1) {
- [_infoArray removeAllObjects];
- NSMutableArray *sliderMuArr = [NSMutableArray array];
- self.CarouselArray = [infoA valueForKey:@"slide"];
- self.classArray = [infoA valueForKey:@"shoptwoclass"];
- self.shop_switch = [infoA valueForKey:@"shop_switch"];
- [self createCollectionHeaderView];
- for (NSDictionary *dic in _CarouselArray) {
- [sliderMuArr addObject:minstr([dic valueForKey:@"slide_pic"])];
- }
- _cycleScroll.imageURLStringsGroup = sliderMuArr;
- }
- [_infoArray addObjectsFromArray:list];
- [_collectionView reloadData];
- if (_infoArray.count < 1) {
- // [PublicView showTextNoData:_collectionView text1:@"暂无商品" text2:@""];
- noDataView.hidden = NO;
- noDataView.frame = CGRectMake(0, collectionHeaderView.height+20, _window_width, 40);
- }else{
- // [PublicView hiddenTextNoData:_collectionView];
- noDataView.hidden = YES;
- }
- if (list.count == 0) {
- [_collectionView.mj_footer endRefreshingWithNoMoreData];
- }
- }
-
- } Fail:^(id fail) {
- [_collectionView.mj_header endRefreshing];
- [_collectionView.mj_footer endRefreshing];
- }];
- }
- #pragma mark--------青少年模式提示------
- -(void)closeYoungClick{
- [[YBYoungManager shareInstance]checkYoungStatus:YoungFrom_Center];
- }
- -(void)showYoungTips{
- youngView = [[UIView alloc]init];
- youngView.frame = CGRectMake(0, 0, _window_height, _window_height);
- youngView.backgroundColor = Normal_Color;
- [self.view addSubview:youngView];
-
- UILabel *titleLb = [[UILabel alloc]init];
- titleLb.font = [UIFont systemFontOfSize:14];
- titleLb.textColor = UIColor.whiteColor;
- titleLb.text = YZMsg(@"青少年模式下暂无商品信息");
- [youngView addSubview:titleLb];
- [titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.center.equalTo(self.view);
- }];
- UIButton *closeBtn = [UIButton buttonWithType:0];
- [closeBtn setTitle:YZMsg(@"关闭青少年模式") forState:0];
- [closeBtn setTitleColor:Pink_Cor forState:0];
- closeBtn.titleLabel.font = [UIFont systemFontOfSize:14];
- [closeBtn addTarget:self action:@selector(closeYoungClick) forControlEvents:UIControlEventTouchUpInside];
- [youngView addSubview:closeBtn];
- [closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerX.equalTo(titleLb.mas_centerX);
- make.top.equalTo(titleLb.mas_bottom).offset(10);
- }];
- }
- -(void)removeYoungView{
- if (youngView) {
- [youngView removeFromSuperview];
- youngView = nil;
- }
- }
- #pragma mark--------初始化-------------
- -(void)initData{
- page = 1;
-
- self.infoArray = [NSMutableArray array];
- self.CarouselArray = [NSMutableArray array];
- self.classArray = [NSArray array];
- }
- -(void)viewWillAppear:(BOOL)animated
- {
- [super viewWillAppear:YES];
- if ([[YBYoungManager shareInstance]youngSwitch]) {
- [self showYoungTips];
- }else{
- [self removeYoungView];
- }
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- self.navigationController.interactivePopGestureRecognizer.delegate = nil;
- self.navigationController.navigationBarHidden = YES;
- self.view.backgroundColor = RGBA(235, 235, 235, 1);
- [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(removeYoungView) name:@"shopYongChange" object:nil];
- [self initData];
- [self addSearchBar];
-
- [self createCollectionView];
- [self createNoDataView];
- }
- -(void)createNoDataView{
- noDataView = [[UIView alloc]initWithFrame:CGRectMake(0, 200, _window_width, 40)];
- noDataView.hidden = YES;
- noDataView.backgroundColor = [UIColor clearColor];
- [_collectionView addSubview:noDataView];
-
- UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, _window_width, 20)];
- label1.font = [UIFont systemFontOfSize:14];
- label1.text = YZMsg(@"暂无商品");
- label1.textAlignment = NSTextAlignmentCenter;
- label1.textColor = RGB_COLOR(@"#333333", 1);
- [noDataView addSubview:label1];
- noDataView.hidden = YES;
- }
- #pragma mark--------添加搜索条---------begin--------
- - (void)addSearchBar {
- //加上 搜索栏
- searchBars = [[HXSearchBar alloc] initWithFrame:CGRectMake(10,66+statusbarHeight, _window_width-20,50)];
- searchBars.backgroundColor = [UIColor clearColor];
- // searchBars.delegate = self;
- //输入框提示
- searchBars.placeholder = YZMsg(@"请输入您要搜索的商品名称");
- //光标颜色
- searchBars.cursorColor = Pink_Cor;
- //TextField
- searchBars.searchBarTextField.layer.cornerRadius = 25;
- searchBars.searchBarTextField.layer.masksToBounds = YES;
- searchBars.searchBarTextField.backgroundColor = UIColor.whiteColor;
- //去掉取消按钮灰色背景
- searchBars.hideSearchBarBackgroundImage = YES;
- searchBars.searchBarTextField.font = [UIFont systemFontOfSize:14];
- [self.view addSubview:searchBars];
- [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor grayColor]];
-
-
- UIButton *searchBtn = [UIButton buttonWithType:0];
- searchBtn.frame = CGRectMake(0, 0, searchBars.width, searchBars.height);
- [searchBtn addTarget:self action:@selector(searchBarClick) forControlEvents:UIControlEventTouchUpInside];
- [searchBars addSubview:searchBtn];
- }
- -(void)headBtnClick{
- if ([[Config getOwnID] intValue] <= 0) {
- [PublicObj warnLogin];
- return;
- }
- ShopHomeVC *shop = [[ShopHomeVC alloc]init];
- shop.shop_name = YZMsg(@"直播小店");
- shop.shop_switch = self.shop_switch;
- [[YBBaseAppDelegate sharedAppDelegate] pushViewController:shop animated:YES];
- }
- -(void)collectionBtnClick{
- if ([[Config getOwnID] intValue] <= 0) {
- [PublicObj warnLogin];
- return;
- }
- // MyCollectionVC *collect = [[MyCollectionVC alloc]init];
- // [[MXBADelegate sharedAppDelegate]pushViewController:collect animated:YES];
- }
- -(void)searchBarClick{
- if ([[Config getOwnID] intValue] <= 0) {
- [PublicObj warnLogin];
- return;
- }
- ShopMallSearchVC *searchVC = [[ShopMallSearchVC alloc]init];
- [[YBBaseAppDelegate sharedAppDelegate]pushViewController:searchVC animated:YES];
- }
- #pragma mark--------添加搜索条---------end--------
- - (void)createCollectionHeaderView{
- if (collectionHeaderView) {
- [collectionHeaderView removeFromSuperview];
- collectionHeaderView = nil;
- }
-
- collectionHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, _window_width, _window_width*0.3*2+20)];
- collectionHeaderView.backgroundColor = RGBA(235, 235, 235, 1);
- collectionHeaderView.clipsToBounds = YES;
- if (_CarouselArray.count > 0) {
- _cycleScroll = [[SDCycleScrollView alloc]initWithFrame:CGRectMake(10, 5, _window_width-20, _window_width*0.3)];
- _cycleScroll.delegate = self;
- _cycleScroll.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated;
- [collectionHeaderView addSubview:_cycleScroll];
- _cycleScroll.scrollDirection = UICollectionViewScrollDirectionHorizontal;
- _cycleScroll.autoScrollTimeInterval = 3.0;//轮播时间间隔,默认1.0秒,可自定义
- _cycleScroll.currentPageDotColor = [UIColor whiteColor];
- _cycleScroll.pageDotColor = [[UIColor whiteColor] colorWithAlphaComponent:0.4];
- _cycleScroll.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated;
- _cycleScroll.layer.cornerRadius = 5;
- _cycleScroll.layer.masksToBounds = YES;
-
- if (self.classArray.count > 12) {
- _mallClassView = [[ShopMallClassView alloc]initWithFrame:CGRectMake(10, _cycleScroll.bottom+5, _window_width-20, _window_width*0.3+30) andData:self.classArray];
- _mallClassView.delegate = self;
- [collectionHeaderView addSubview:_mallClassView];
- collectionHeaderView.size = CGSizeMake(_window_width, _window_width*0.3*2+40);
- }else if(self.classArray.count == 0){
- collectionHeaderView.size = CGSizeMake(_window_width, _window_width*0.3+40);
- }else{
- _mallClassView = [[ShopMallClassView alloc]initWithFrame:CGRectMake(10, _cycleScroll.bottom+5, _window_width-20, (_window_width*0.3)/2+30) andData:self.classArray];
- _mallClassView.delegate = self;
- [collectionHeaderView addSubview:_mallClassView];
- collectionHeaderView.size = CGSizeMake(_window_width, _window_width*0.3+(_window_width*0.3)/2+40);
- }
- }else{
- if (self.classArray.count > 12) {
- _mallClassView = [[ShopMallClassView alloc]initWithFrame:CGRectMake(10, 0, _window_width-20, _window_width*0.3+20) andData:self.classArray];
- _mallClassView.delegate = self;
- [collectionHeaderView addSubview:_mallClassView];
- collectionHeaderView.size = CGSizeMake(_window_width, _window_width*0.3+40);
- }else if(self.classArray.count == 0){
- collectionHeaderView.size = CGSizeMake(0, 0);
- }else{
- _mallClassView = [[ShopMallClassView alloc]initWithFrame:CGRectMake(10, 0, _window_width-20, (_window_width*0.3)/2+30) andData:self.classArray];
- _mallClassView.delegate = self;
- [collectionHeaderView addSubview:_mallClassView];
- collectionHeaderView.size = CGSizeMake(_window_width, (_window_width*0.3)/2+40);
- }
- }
-
- }
- #pragma mark ============轮播图点击=============
- -(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index{
- NSString *uuuuuuu = minstr([_CarouselArray[index] valueForKey:@"slide_url"]);
- if ([PublicObj isUrlString:uuuuuuu]) {
- PubH5 *web = [[PubH5 alloc]init];
- web.url = uuuuuuu;
- [[YBBaseAppDelegate sharedAppDelegate] pushViewController:web animated:YES];
- }
- }
- -(int)getRandomCellHeight:(int)from to:(int)to{
- return (int)(from +(arc4random()%(to-from+1)));
- }
- -(void)createCollectionView{
- _flow = [[YBShopLayout alloc] init];
- _flow.delegate = self;
- _flow.flowLayoutStyle = 0;
- _collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0,64+50+statusbarHeight, _window_width, _window_height-64-statusbarHeight-50-ShowDiff-49) collectionViewLayout:_flow];
- _collectionView.backgroundColor = RGBA(235, 235, 235, 1);
- _collectionView.delegate = self;
- _collectionView.dataSource = self;
- [_collectionView registerNib:[UINib nibWithNibName:@"ShopMallCell" bundle:nil] forCellWithReuseIdentifier:@"ShopMallCell"];
- [_collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"hotHeaderV"];
- [self.view addSubview:_collectionView];
- _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-
- _collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
- page = 1;
- [self pullInternet];
- }];
- _collectionView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
- page ++;
- [self pullInternet];
- }];
- [self pullInternet];
- }
- -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
- return _infoArray.count;
- }
- - (CGSize)waterFlowLayout:(YBShopLayout *)waterFlowLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
- {
- int height =[self getRandomCellHeight:(_window_width-21)/2 + 75 to:(_window_width-21)/2 + 250];
- return CGSizeMake((_window_width-21)/2, height);
- }
- /** 列数*/
- -(CGFloat)columnCountInWaterFlowLayout:(YBShopLayout *)waterFlowLayout{
- return 2;
- }
- /** 列间距*/
- -(CGFloat)columnMarginInWaterFlowLayout:(YBShopLayout *)waterFlowLayout{
- return 10;
- }
- /** 边缘之间的间距*/
- -(UIEdgeInsets)edgeInsetInWaterFlowLayout:(YBShopLayout *)waterFlowLayout{
- return UIEdgeInsetsMake(10, 10, 10, 10);
- }
- -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
- [collectionView deselectItemAtIndexPath:indexPath animated:YES];
- NSDictionary *subDic = _infoArray[indexPath.row];
- [PublicObj checkGoodsExistenceWithID:minstr([subDic valueForKey:@"id"]) Existence:^(int code, NSString *msg) {
- if (code == 0) {
- if ([minstr([subDic valueForKey:@"type"]) isEqual:@"1"]) {
- OutsideGoodsDetailVC *detail = [[OutsideGoodsDetailVC alloc]init];
- detail.goodsID = minstr([subDic valueForKey:@"id"]);
- detail.liveUid = @"0";
- [[YBBaseAppDelegate sharedAppDelegate] pushViewController:detail animated:YES];
- }else{
- CommodityDetailVC *detail = [[CommodityDetailVC alloc]init];
- detail.goodsID = minstr([subDic valueForKey:@"id"]);
- detail.liveUid = @"0";
- [[YBBaseAppDelegate sharedAppDelegate] pushViewController:detail animated:YES];
- }
- }else{
- [MBProgressHUD showError:msg];
- }
- }];
- }
- -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
- ShopMallCell *cell = (ShopMallCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"ShopMallCell" forIndexPath:indexPath];
- NSDictionary *subDic = _infoArray[indexPath.row];
- [cell.thumbImgV sd_setImageWithURL:[NSURL URLWithString:minstr([subDic valueForKey:@"thumb"])]];
- cell.titleL.text = minstr([subDic valueForKey:@"name"]);
- cell.priceL.text = [NSString stringWithFormat:@"¥%@",minstr([subDic valueForKey:@"price"])];
- //type 商品类型 0 站内商品 1 外链商品
- if ([minstr([subDic valueForKey:@"type"]) isEqual:@"1"]) {
- cell.lineLb.hidden = NO;
- cell.sellCountLb.text = [NSString stringWithFormat:@"¥%@",minstr([subDic valueForKey:@"original_price"])];
- }else{
- cell.lineLb.hidden = YES;
- cell.sellCountLb.text =[NSString stringWithFormat:@"%@%@%@",YZMsg(@"已售"),minstr([subDic valueForKey:@"sale_nums"]),YZMsg(@"件")];
- }
- // cell.backgroundColor = Normal_Color;
- cell.titleL.textColor = UIColor.blackColor;
- return cell;
- }
- #pragma mark ================ collectionview头视图 ===============
- - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
- if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
- UICollectionReusableView *header = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"hotHeaderV" forIndexPath:indexPath];
- header.backgroundColor = [UIColor whiteColor];
- [header addSubview:collectionHeaderView];
- return header;
- }else{
- return nil;
- }
- }
- /** 头视图Size */
- -(CGSize )waterFlowLayout:(YBShopLayout *)waterFlowLayout sizeForHeaderViewInSection:(NSInteger)section{
- if (_CarouselArray.count == 0) {
- if (self.classArray.count > 12) {
- return CGSizeMake(_window_width, _window_width*0.3+40);
- }else if(self.classArray.count == 0){
- return CGSizeMake(0, 0);
- }else{
- return CGSizeMake(_window_width, (_window_width*0.3)/2+40);
- }
- }
- if (self.classArray.count > 12) {
- return CGSizeMake(_window_width, _window_width*0.3*2+40);
- }else if(self.classArray.count == 0){
- return CGSizeMake(_window_width, _window_width*0.3+30);
- }else{
- return CGSizeMake(_window_width, _window_width*0.3+(_window_width*0.3)/2+40);
- }
- }
- - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
- if (_CarouselArray.count == 0) {
- if (self.classArray.count > 12) {
- return CGSizeMake(_window_width, _window_width*0.3+40);
- }else if(self.classArray.count == 0){
- return CGSizeMake(0, 0);
- }else{
- return CGSizeMake(_window_width, (_window_width*0.3)/2+40);
- }
- }
- if (self.classArray.count > 12) {
- return CGSizeMake(_window_width, _window_width*0.3*2+40);
- }else if(self.classArray.count == 0){
- return CGSizeMake(_window_width, _window_width*0.3+30);
- }else{
- return CGSizeMake(_window_width, _window_width*0.3+(_window_width*0.3)/2+40);
- }
- }
- #pragma mark--------分类代理--------
- -(void)selectClassData:(NSDictionary *)dic
- {
- ShopMallDetailVC *detail = [[ShopMallDetailVC alloc]init];
- detail.classDic = dic;
- [[YBBaseAppDelegate sharedAppDelegate]pushViewController:detail animated:YES];
- }
- -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
- lastContentOffset = scrollView.contentOffset.y;
- }
- -(void)scrollViewDidScroll:(UIScrollView *)scrollView {
- if (scrollView.contentOffset.y < lastContentOffset)
- {
- [self showTabBar];
- // [self.navigationController setNavigationBarHidden:NO animated:YES];//向上
- } else if (scrollView.contentOffset.y > lastContentOffset)
- {
- // [self.navigationController setNavigationBarHidden:YES animated:YES];//向下
- [self hideTabBar];
- }
- }
- #pragma mark ================ 隐藏和显示tabbar ===============
- - (void)hideTabBar {
-
- // if (self.tabBarController.tabBar.hidden == YES) {
- // return;
- // }
- // self.tabBarController.tabBar.hidden = YES;
- // ZYTabBar *tabbar = (ZYTabBar *)self.tabBarController.tabBar;
- // tabbar.plusBtn.hidden = YES;
- }
- - (void)showTabBar
- {
- // if (self.tabBarController.tabBar.hidden == NO)
- // {
- // return;
- // }
- // self.tabBarController.tabBar.hidden = NO;
- // ZYTabBar *tabbar = (ZYTabBar *)self.tabBarController.tabBar;
- // tabbar.plusBtn.hidden = NO;
- }
- @end
|