You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

321 lines
11 KiB

//
// RankingListViewController.m
// tongxin
//
// Created by WeiChaoZheng on 2018/8/24.
// Copyright © 2018xTT. All rights reserved.
//
#import "RankingListViewController.h"
#import "RankingListTableViewCell.h"
#import "RankingMyListTableViewCell.h"
#import "SwitchDeviceView.h"
#import "Step.h"
#define tableViewCellHeight 60
@interface RankingListViewController ()<YBPopupMenuDelegate>
/**
导航栏自定义按钮
*/
@property (strong , nonatomic) UIButton *rightBtn;
/**
自定义按钮的边角
*/
@property (strong , nonatomic) UIButton *rightBtnCorner;
/**
切换榜单的View
*/
@property (nonatomic, strong) SwitchDeviceView * switchView;
/**
自己的信息
*/
@property (nonatomic, strong) Step * infoStep;
@end
@implementation RankingListViewController
@synthesize myDataSource = _myDataSource;
- (Step *)infoStep{
if (!_infoStep) {
_infoStep = [[Step alloc] init];
_infoStep.imei = cUser.cDevice.imei;
_infoStep.name = cUser.cDevice.name;
_infoStep.phone = cUser.cDevice.phone;
_infoStep.image = cUser.cDevice.image;
_infoStep.avator = cUser.cDevice.avator;
_infoStep.sex = cUser.cDevice.sex;
}
return _infoStep;
}
-(RankingListHeadView *)listHeadView{
if(!_listHeadView){
_listHeadView = [RankingListHeadView viewFirstXib];
}
return _listHeadView;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"排行榜";
self.myDataSource = [NSMutableArray array];
[self.myTableView registerNib:[UINib nibWithNibName:@"RankingListHeadCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"RankingListHeadCellID"];
[self.myTableView registerNib:[UINib nibWithNibName:@"RankingListTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"RankingListTableViewCellID"];
[self.myTableView registerNib:[UINib nibWithNibName:@"RankingMyListTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"RankingMyListTableViewCellID"];
[self initView];
WEAKSELF
self.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
[weakSelf switchListModelWithData:weakSelf.rightBtn.titleLabel.text];
}];
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.myTableView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
self.myTableView.bounces = NO;
//去线
self.myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.myTableView.layer.cornerRadius = 5;
self.myTableView.layer.masksToBounds = YES;
self.myTableView.showsVerticalScrollIndicator = NO;
self.myTableView.showsHorizontalScrollIndicator = NO;
self.myTableView.userInteractionEnabled = NO;
self.tableViewHeight.constant = tableViewCellHeight; // 默认是一个cell高度而已
//添加没有设备时 显示的 View
[self.scrollView addSubview:self.listHeadView];
[self.listHeadView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_offset(0);
make.left.right.mas_offset(0);
make.height.mas_offset(200);
}];
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
[self.headUpdateLabel setHidden:YES];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollView.contentOffset.y == 0){
[self.headUpdateLabel setHidden:NO];
}
}
-(void)initView{
_rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
_rightBtn.frame = CGRectMake(0, 0, 70, 21);
_rightBtnCorner = [UIButton buttonWithType:UIButtonTypeCustom];
_rightBtnCorner.frame = CGRectMake(0, 0, 12, 21);
[_rightBtnCorner setImage:[UIImage imageNamed:@"ic_arrow_drop_down_white"] forState:0];
[_rightBtnCorner addTarget:self action:@selector(switchListModel:) forControlEvents:UIControlEventTouchUpInside];
[_rightBtnCorner setImageEdgeInsets:UIEdgeInsetsMake(0, -15, 0, 0)];
// [_rightBtn setImage:image forState:0];
// [_rightBtn setImageEdgeInsets:UIEdgeInsetsMake(0, 65, 0, -20)];
[_rightBtn setTitleColor:[UIColor whiteColor] forState:0];
_rightBtn.titleLabel.font = [UIFont systemFontOfSize:15];
[_rightBtn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];
[_rightBtn setTitle:@"日榜" forState:0];
[_rightBtn addTarget:self action:@selector(switchListModel:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightBarBtn = [[UIBarButtonItem alloc] initWithCustomView:_rightBtn];
UIBarButtonItem *imageBarBtn = [[UIBarButtonItem alloc] initWithCustomView:_rightBtnCorner];
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -15;
self.navigationItem.rightBarButtonItems = @[negativeSpacer,imageBarBtn,rightBarBtn];
self.headUpdateLabel.textColor = [UIColor whiteColor];
//185 191 201
self.headUpdateLabel.backgroundColor = RGBA(185, 191, 201, 1);
//默认隐藏
[self.headUpdateLabel setHidden:YES];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self switchListModelWithData:@"日榜"];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
if(self.rightBtn.isSelected){
self.rightBtn.selected = NO;
[self.switchView setHidden:YES];
}
}
-(void)switchListModel:(UIButton *)sender{
self.rightBtn.selected = !self.rightBtn.selected;
if(self.rightBtn.isSelected){
[_rightBtnCorner setImage:[UIImage imageNamed:@"ic_arrow_drop_up_white"] forState:0];
}else{
[_rightBtnCorner setImage:[UIImage imageNamed:@"ic_arrow_drop_down_white"] forState:0];
}
CGPoint p = CGPointMake(ScreenWidth - 30, getRectNavAndStatusHight - 10);
[YBPopupMenu showAtPoint:p titles:@[@"日榜",@"周榜",@"月榜"] icons:nil menuWidth:80*(ScreenWidth/320) otherSettings:^(YBPopupMenu *popupMenu) {
popupMenu.textColor = [UIColor blackColor];
popupMenu.fontSize = 15;
popupMenu.cornerRadius = 4.0f;
popupMenu.dismissOnSelected = NO;
popupMenu.delegate = self;
popupMenu.offset = 5;
popupMenu.type = YBPopupMenuTypeDark;
}];
}
#pragma mark - YBPopupMenuDelegate 代理方法
- (void)ybPopupMenuDidSelectedAtIndex:(NSInteger)index ybPopupMenu:(YBPopupMenu *)ybPopupMenu {
[ybPopupMenu dismiss];
NSArray * arr = @[@"日榜",@"周榜",@"月榜"];
[self switchListModelWithData:arr[index]];
[self.rightBtn setTitle:arr[index] forState:0];
self.rightBtn.selected = !self.rightBtn.selected;
if(self.rightBtn.isSelected){
[_rightBtnCorner setImage:[UIImage imageNamed:@"ic_arrow_drop_up_white"] forState:0];
}else{
[_rightBtnCorner setImage:[UIImage imageNamed:@"ic_arrow_drop_down_white"] forState:0];
}
}
-(void)switchListModelWithData:(NSString *)title{
NSMutableDictionary *params = [NSMutableDictionary dictionary];
if([title isEqualToString:@"日榜"]){
//日榜
NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970];
[params setValue:today forKey:@"day"];
}else if([title isEqualToString:@"周榜"]){
//周榜
[params setValue:@(1) forKey:@"week"];
}else{
//月榜
[params setValue:@(1) forKey:@"month"];
}
[self.myDataSource removeAllObjects];
WEAKSELF
[Step getRankingListParams:params Success:^(NSDictionary *dic) {
//更新时间
weakSelf.headUpdateLabel.text = [NSString stringWithFormat:@"%@ 更新",[myHelper getDateFormatWithStr:@"HH:mm" timeInterval:[dic[@"update_time"] doubleValue]]];
[self.headUpdateLabel setHidden:NO];
weakSelf.infoStep.num = dic[@"my_num"];
weakSelf.infoStep.my_ranking = dic[@"my_ranking"];
NSArray *listArr = dic[@"ranking_list"]; // 除了自己的排名.
NSMutableArray *firstArr = [NSMutableArray array];
NSMutableArray *secondArr = [NSMutableArray array];
for (int i=0; i<listArr.count; i++) {
Step *temp = [Step new];
temp.num = listArr[i][@"num"];
temp.imei = listArr[i][@"imei"];
temp.name = listArr[i][@"name"];
temp.avator = listArr[i][@"image"];
temp.my_ranking = listArr[i][@"ranking"];
if(i < 3){
[firstArr addObject:temp];
}else{
if([weakSelf.infoStep.imei isEqualToString:temp.imei]){
//自己
[weakSelf.infoStep setValuesForKeysWithDictionary:[temp mj_keyValues]];
}
[secondArr addObject:temp];
}
}
if(firstArr.count > 0){
[self.listHeadView setDataWithListHead:firstArr];
}else{
[self.listHeadView setDataWithListHead:nil];
}
[secondArr insertObject:weakSelf.infoStep atIndex:0];
weakSelf.myDataSource = secondArr;
CGFloat tableViewHeight = tableViewCellHeight*(secondArr.count);
weakSelf.tableViewHeight.constant = tableViewHeight;
weakSelf.myTableView.contentSize = CGSizeMake(weakSelf.myTableView.contentSize.width, tableViewHeight);
[weakSelf.myTableView reloadData];
[weakSelf.scrollView.mj_header endRefreshing];
} failure:^(NSError *error) {
[weakSelf.scrollView.mj_header endRefreshing];
}];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.myDataSource count];
}
//行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return tableViewCellHeight;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleNone;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if(indexPath.row == 0){
//
RankingMyListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RankingMyListTableViewCellID" forIndexPath:indexPath];
[cell setMyDataWith:self.infoStep];
if([self.myDataSource count] == 1){
//表明除了 自己没有其他
[cell setLineViewHidden:YES];
}else{
[cell setLineViewHidden:NO];
}
return cell;
}else{
//排行
RankingListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RankingListTableViewCellID" forIndexPath:indexPath];
[cell setDataWith:self.myDataSource[indexPath.row]];
if(indexPath.row == [self.myDataSource count] - 1){
[cell setLineViewHidden:YES];
}else{
[cell setLineViewHidden:NO];
}
return cell;
}
return nil;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end