//
//  RootMainViewController.m
//  ZapyaGame
//
//  Created by wangtao on 2018/3/20.
//  Copyright © 2018年 wangtao. All rights reserved.
//

#import "RootMainViewController.h"
#import "DXCommenHelper.h"
#import "UIImage+WTAdd.h"
#import "ZGMyViewController.h"
#import "ZGImageManager.h"
#import "ZGLoginViewController.h"
#import "ZGUserManager.h"
#import <Masonry.h>
#import "UIView+ZWL.h"
#import "ZGGameListViewController.h"
#import "FindFriendPlayViewController.h"
#import "ZGConversationViewController.h"
#import "GameRankListViewController.h"
#import "ZGScrollHeaderView.h"
#import "MyScrollView.h"
#import "ZGUserManager.h"
@interface RootMainViewController ()<UIScrollViewDelegate>
@property (nonatomic, strong) MyScrollView *scrollView;
@property (nonatomic, strong) ZGScrollHeaderView *scrollHeader;
@property (nonatomic, assign) NSInteger selectedIndex;
@property (nonatomic, weak) ZGGameListViewController *gameList;
@property (nonatomic, weak) FindFriendPlayViewController *findFriend;
@property (nonatomic, weak) ZGConversationViewController *conversation;
@end

@implementation RootMainViewController
{
    BOOL _showGameAndPlay;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    if (![[ZGUserManager shareInstance] ifIsLogin] && ![[ZGUserManager shareInstance] getMe].uid) {
        ZGLoginViewController *LoginVC = [[ZGLoginViewController alloc]init];
        [self.navigationController pushViewController:LoginVC animated:NO];
    }

}
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self setNavNeedHidden:NO];
    [self setNavBtn];
}
- (void)awakeFromNib{
    [super awakeFromNib];
    _showGameAndPlay = [[ZGUserManager shareInstance] isChecking];
}
- (void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];

    [self scrollView];
    [self setChildController];

}
- (ZGGameListViewController *)gameList{
    if (!_gameList) {
        ZGGameListViewController *gameList = [ZGGameListViewController new];

//      gameList.view.frame = CGRectMake(0, 0, SCREEN_WIDTH, self.view.height);
        [self.scrollView addSubview:gameList.view];
        gameList.view.tag = 0;
        [self addChildViewController:gameList];
        [gameList.view mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.top.equalTo(self.scrollView);
            make.width.equalTo(self.view);
            make.bottom.equalTo(self.view);
        }];
        _gameList = gameList;
    }
    return _gameList;
}
- (FindFriendPlayViewController *)findFriend{
    if (!_findFriend) {
        @weakify(self)
        FindFriendPlayViewController *findFriend = [FindFriendPlayViewController new];
        findFriend.didAcceptGameInviteBlock = ^(ZGUserModel *recever, ZGGameModel *game) {
            @strongify(self)
            [self matchWithUser:recever game:game];
        };
//      findFriend.view.frame = CGRectMake(SCREEN_WIDTH, 0, SCREEN_WIDTH, self.view.height);
        [self.scrollView addSubview:findFriend.view];
        findFriend.view.tag = 1;
        [self addChildViewController:findFriend];
        [findFriend.view mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(self.scrollView);
            make.left.equalTo(self.scrollView).offset(SCREEN_WIDTH);;
            make.width.equalTo(self.view);
            make.bottom.equalTo(self.view);
        }];
        _findFriend = findFriend;
    }
    return _findFriend;
}
- (ZGConversationViewController *)conversation{
    if (!_conversation) {
        ZGConversationViewController *conversation = [ZGConversationViewController new];
        @weakify(self)
        conversation.didAcceptGameInviteBlock = ^(ZGUserModel *recever, ZGGameModel *game) {
            @strongify(self)
            [self matchWithUser:recever game:game];
        };
//      conversation.view.frame = CGRectMake(SCREEN_WIDTH * 2, 0, SCREEN_WIDTH, self.view.height);
        [self.scrollView addSubview:conversation.view];
        conversation.view.tag = 2;
        [self addChildViewController:conversation];
        _conversation = conversation;

    }

    [_conversation.view mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.scrollView);
        make.left.equalTo(self.scrollView).offset(_showGameAndPlay ? SCREEN_WIDTH * 2 : 0);
        make.width.equalTo(self.view);
        make.bottom.equalTo(self.view);
    }];

    return _conversation;
}
- (void)setChildController{
    if (_showGameAndPlay) {
        [self gameList];
        [self findFriend];
    }
    [self conversation];

}
- (void)matchWithUser:(ZGUserModel *)user game:(ZGGameModel *)game{

    self.selectedIndex = 0;
    [self.scrollView setContentOffset:CGPointMake(0, 0)];
    if (!self.gameList || !user || !game) return;

    self.gameList.selectedGame = game;
    self.gameList.uid = user.uid;

    [self.gameList chooseGame];
}
-(void)setNavBtn{
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];


    backBtn.contentMode = UIViewContentModeScaleAspectFill;

    backBtn.frame = CGRectMake(0, 0, 24, 24);


    if (@available(iOS 9.0, *)) {
        [backBtn.heightAnchor constraintEqualToConstant:24].active = YES;
        [backBtn.widthAnchor constraintEqualToConstant:24].active = YES;
    } else {
        // Fallback on earlier versions
    }
    backBtn.layer.cornerRadius = backBtn.frame.size.width/2;
    backBtn.layer.masksToBounds = YES;




    [backBtn setImage:[ZGCommonImagePlaceHolder imageByResizeToSize:CGSizeMake(24, 24)] forState:0];
    if (ValidStr([ZGUserManager shareInstance].getMe.avurl)) {
        [[ZGImageManager sharedMananger] cacheOrDownloadImage:[ZGUserManager shareInstance].getMe.avurl completeBlock:^(UIImage *img) {
            dispatch_async_on_main_queue(^{
                [backBtn setImage:img forState:0];
            });
        }];
    }else{
        [backBtn setBackgroundImage:[ZGCommonImagePlaceHolder imageByResizeToSize:CGSizeMake(24, 24)] forState:0];
    }
    [[ZGUserManager shareInstance].rac_loginStatusChange subscribeNext:^(id x) {
        [backBtn setImage:[ZGCommonImagePlaceHolder imageByResizeToSize:CGSizeMake(24, 24)] forState:0];
        if (ValidStr([ZGUserManager shareInstance].getMe.avurl)) {
            [[ZGImageManager sharedMananger] cacheOrDownloadImage:[ZGUserManager shareInstance].getMe.avurl completeBlock:^(UIImage *img) {
                dispatch_async_on_main_queue(^{
                    [backBtn setImage:img forState:0];
                });
            }];
        }else{
            [backBtn setBackgroundImage:[ZGCommonImagePlaceHolder imageByResizeToSize:CGSizeMake(24, 24)] forState:0];
        }
    }];
    [backBtn addTarget:self action:@selector(myBtnClick:) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];


    @weakify(self)

    NSArray *array = _showGameAndPlay ? @[GSLocalString(@"StringHomeGame"), GSLocalString(@"StringGameMainFindFriendPlay"), GSLocalString(@"StringGameMainConversation")] : @[GSLocalString(@"StringGameMainConversation")];

    _scrollHeader = [[ZGScrollHeaderView alloc] initWithNameArray:array selectedIndex:self.selectedIndex];
    _scrollHeader.didClickTitleWithIndex = ^(NSUInteger index) {
        @strongify(self)
        [self.scrollView setContentOffset:CGPointMake(index * self.view.width, self.scrollView.contentOffset.y) animated:YES];
    };
    self.navigationItem.titleView = _scrollHeader;
}
- (IBAction)myBtnClick:(id)sender {

    ZGMyViewController *myVC = [[ZGMyViewController alloc] initWithNibName:@"ZGMyViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:myVC animated:YES];

}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (MyScrollView *)scrollView{
    if (!_scrollView) {
        _scrollView = [MyScrollView new];
        _scrollView.pagingEnabled = YES;
        _scrollView.delegate = self;
        _scrollView.bounces = NO;
        _scrollView.backgroundColor = [UIColor clearColor];

//      self.automaticallyAdjustsScrollViewInsets = NO;
        [self.view addSubview:_scrollView];
    }
    _scrollView.contentSize = CGSizeMake(self.view.width *  (_showGameAndPlay ? 3 : 1), self.view.height - SysNavHight);
    _scrollView.frame = self.view.bounds;
    return _scrollView;
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    if (scrollView == _scrollView)
    {
        _gameList.gameCollectionView.scrollEnabled = YES;
        _conversation.conversationTableView.scrollEnabled = YES;
    }

    NSInteger index = scrollView.contentOffset.x / scrollView.width;
    self.selectedIndex = index;
    [self.scrollView setContentOffset:CGPointMake(index * self.view.width, self.scrollView.contentOffset.y) animated:YES];
//  NSLog(@"%ld", (long)index);
    _scrollHeader.currentScrollPercent = scrollView.contentOffset.x / scrollView.width;
    _scrollHeader.currentIndex = index;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if (scrollView == _scrollView)
    {
        _gameList.gameCollectionView.scrollEnabled = NO;
        _conversation.conversationTableView.scrollEnabled = NO;
    }

    NSInteger index = scrollView.contentOffset.x / scrollView.width;

    self.selectedIndex = index;

    _scrollHeader.currentScrollPercent = scrollView.contentOffset.x / scrollView.width;
}
@end
#import <UIKit/UIKit.h>

@interface MyScrollView : UIScrollView<UIGestureRecognizerDelegate>

@end
//
//  MyScrollView.m
//  ZapyaGame
//
//  Created by wangtao on 2018/6/4.
//  Copyright © 2018年 douglas. All rights reserved.
//

#import "MyScrollView.h"
//https://blog.csdn.net/chenyong05314/article/details/50072531
@implementation MyScrollView

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    if (gestureRecognizer.state != 0) {
        return YES;
    } else {
        return NO;
    }
}

//https://xidazheng.com/2016/10/21/how-ios-handles-touches-responder-chain-touch-event-handling-gesture-recognizers-scrollviews/
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    UIView *view = touch.view;
    if (view.frame.size.height == 110) { /// 高度为找人玩顶部最近匹配uicollectionview的高度
        return NO;
    }
    return YES;
}
// Allows inner UITableView swipe-to-delete gesture
//- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(nonnull UIGestureRecognizer *)otherGestureRecognizer
//{
////    UIScrollViewPanGestureRecognizer;
////    return [otherGestureRecognizer.view isKindOfClass:[UITableView class]];
//  if (gestureRecognizer.state != 0) {
//      return YES;
//  } else {
//      return NO;
//  }
//}
//- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
//{
//  [self.nextResponder touchesBegan:touches withEvent:event];
//}
//
//- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
//{
//  if(!self.dragging)
//  {
//      [self.nextResponder touchesMoved:touches withEvent:event];
//  }
//}
//
//- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
//{
//  [self.nextResponder touchesEnded:touches withEvent:event];
//}
@end

0 Comments latest

No comments.