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.
447 lines
16 KiB
447 lines
16 KiB
1 year ago
|
//
|
||
|
// StepViewController.m
|
||
|
// watch
|
||
|
//
|
||
|
// Created by xTT on 2017/7/12.
|
||
|
// Copyright © 2017年 xTT. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "StepViewController.h"
|
||
|
#import "Step.h"
|
||
|
#import "PathView.h"
|
||
|
#import "UILabel+BezierAnimation.h"
|
||
|
#import "VRGCalendarView.h"
|
||
|
|
||
|
@interface StepViewController ()<UITextFieldDelegate,VRGCalendarViewDelegate>
|
||
|
{
|
||
|
VRGCalendarView *calendar;
|
||
|
UIControl *_overlayView;
|
||
|
}
|
||
|
|
||
|
@property (strong, nonatomic) Step *infoStep;
|
||
|
/**
|
||
|
环形圈
|
||
|
*/
|
||
|
@property (strong, nonatomic) PathView *pathView;
|
||
|
/**
|
||
|
// 实际的走的步数
|
||
|
*/
|
||
|
@property (strong, nonatomic) UILabel *creditLabel;
|
||
|
|
||
|
/**
|
||
|
编辑目标步数的按钮
|
||
|
*/
|
||
|
@property (strong, nonatomic) UIButton *editingGoalStepBtn;
|
||
|
|
||
|
/**
|
||
|
编辑目标步数的输入框
|
||
|
*/
|
||
|
@property (strong, nonatomic) UITextField *editingGoalTextField;
|
||
|
|
||
|
/**
|
||
|
编辑目标步数的输入框 的View
|
||
|
*/
|
||
|
@property (strong, nonatomic) UIView *editingGoalView;
|
||
|
|
||
|
|
||
|
@end
|
||
|
|
||
|
@implementation StepViewController
|
||
|
|
||
|
@synthesize myDataSource = _myDataSource;
|
||
|
|
||
|
- (NSMutableArray *)myDataSource{
|
||
|
if (!_myDataSource) {
|
||
|
_myDataSource = [[NSMutableArray alloc] initWithArray:@[@[@"今日步数",@"今日里程",@"消耗卡路里"]]];
|
||
|
}
|
||
|
return _myDataSource;
|
||
|
}
|
||
|
|
||
|
- (Step *)infoStep{
|
||
|
if (!_infoStep) {
|
||
|
_infoStep = [Step mj_objectWithKeyValues:[cUser.cDevice mj_JSONObject]];
|
||
|
|
||
|
// _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;
|
||
|
}
|
||
|
-(void)viewWillAppear:(BOOL)animated{
|
||
|
[super viewWillAppear:animated];
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
-(void)viewDidDisappear:(BOOL)animated{
|
||
|
[super viewDidDisappear:animated];
|
||
|
[self dismissCalendarView];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
重新加载动画
|
||
|
*/
|
||
|
-(void)reLoadAnimation{
|
||
|
if(self.creditLabel){
|
||
|
[self.creditLabel animationFromnum:0 toNum:self.infoStep.num.floatValue duration:1 precision:@"%d"];
|
||
|
|
||
|
}
|
||
|
self.heatLabel.text = [NSString stringWithFormat:@"%.03f",self.infoStep.calorie.floatValue];
|
||
|
|
||
|
self.distanceLabel.text = [NSString stringWithFormat:@"%.03f",self.infoStep.distance.floatValue];
|
||
|
if(self.pathView){
|
||
|
double turns = self.infoStep.num.doubleValue /self.infoStep.target.doubleValue;
|
||
|
// double turns = 6123.0 /self.infoStep.target.doubleValue;
|
||
|
[self.pathView StartAnimationWithStartColor:[UIColor redColor] EndColor:mainColor NumberOfTurns:turns AnimationDuration:2 Delay:0];
|
||
|
}
|
||
|
}
|
||
|
-(void)viewDidAppear:(BOOL)animated{
|
||
|
[super viewDidAppear:animated];
|
||
|
|
||
|
|
||
|
}
|
||
|
- (void)viewDidLoad {
|
||
|
[super viewDidLoad];
|
||
|
[self setDayTimeLabelText:@"今天"];
|
||
|
[self.dayTimeBtn setTitleColor:mainColor forState:0];
|
||
|
[self initView];
|
||
|
|
||
|
|
||
|
|
||
|
[self getCurrentStepDateWithParam:nil];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
//MARK:----点击日期标题,显示日历的方法
|
||
|
*/
|
||
|
- (IBAction)dayTimeBtnAction{
|
||
|
[self dismissCalendarView];
|
||
|
_overlayView = [[UIControl alloc]initWithFrame:self.view.bounds];
|
||
|
[_overlayView addTarget:self action:@selector(dismissCalendarView) forControlEvents:UIControlEventTouchUpInside];
|
||
|
calendar = [[VRGCalendarView alloc] init];
|
||
|
calendar.limitDay = 60;
|
||
|
CGRect c = calendar.frame;
|
||
|
c.origin.y = self.dayTimeBtn.frame.origin.y+self.dayTimeBtn.frame.size.height+10;
|
||
|
calendar.frame = c;
|
||
|
calendar.delegate=self;
|
||
|
|
||
|
calendar.alpha = 1;
|
||
|
[self.view addSubview:_overlayView];
|
||
|
[self.view addSubview:calendar];
|
||
|
}
|
||
|
|
||
|
- (void)dismissCalendarView{
|
||
|
if(_overlayView){
|
||
|
[_overlayView removeFromSuperview];
|
||
|
_overlayView = nil;
|
||
|
[UIView animateWithDuration:0.35 animations:^{
|
||
|
calendar.alpha = 0;
|
||
|
}completion:^(BOOL finished) {
|
||
|
[calendar removeFromSuperview];
|
||
|
}];
|
||
|
[self.dayTimeIconBtn setImage:[UIImage imageNamed:@"ic_arrow_drop_dowm_main"] forState:0];
|
||
|
}
|
||
|
}
|
||
|
#pragma mark - 日期选择Delegate
|
||
|
-(void)calendarView:(VRGCalendarView *)calendarView switchedToMonth:(int)month targetHeight:(float)targetHeight animated:(BOOL)animated {
|
||
|
|
||
|
}
|
||
|
|
||
|
-(void)calendarView:(VRGCalendarView *)calendarView dateSelected:(NSDate *)date {
|
||
|
|
||
|
NSString *selectDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" date:date];
|
||
|
//对比昨天和今天
|
||
|
//昨天
|
||
|
NSString *yesterday = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24];
|
||
|
//今天
|
||
|
NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970];
|
||
|
if([selectDay isEqualToString:yesterday]){
|
||
|
[self setDayTimeLabelText:@"昨天"];
|
||
|
|
||
|
}else if([selectDay isEqualToString:today]){
|
||
|
[self setDayTimeLabelText:@"今天"];
|
||
|
}else{
|
||
|
[self setDayTimeLabelText:selectDay];
|
||
|
}
|
||
|
[self getCurrentStepDateWithParam:nil];
|
||
|
[self dismissCalendarView];
|
||
|
}
|
||
|
|
||
|
-(void)initView{
|
||
|
self.beforeDayBtn.layer.cornerRadius = 3;
|
||
|
|
||
|
self.beforeDayBtn.layer.masksToBounds = YES;
|
||
|
[self.beforeDayBtn setBackgroundColor:mainColor];
|
||
|
|
||
|
self.afterDayBtn.layer.cornerRadius = 3;
|
||
|
|
||
|
self.afterDayBtn.layer.masksToBounds = YES;
|
||
|
|
||
|
[self.afterDayBtn setBackgroundColor:mainColor];
|
||
|
|
||
|
self.distanceLabel.textColor = mainColor;
|
||
|
|
||
|
self.heatLabel.textColor = mainColor;
|
||
|
|
||
|
self.pathView = [[PathView alloc] initWithFrame:CGRectMake(SWIDTH*(1-(190.0/375.0))/2, (ScreenHeight-getRectNavAndStatusHight)/5.0, SWIDTH*190.0/375.0, SWIDTH*190.0/375.0) LineWidth:10];
|
||
|
|
||
|
|
||
|
|
||
|
[self.view addSubview:self.pathView];
|
||
|
|
||
|
|
||
|
|
||
|
// 实际的走的步数
|
||
|
self.creditLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, SWIDTH*150/375.0, 21)];
|
||
|
self.creditLabel.center = self.pathView.center;
|
||
|
self.creditLabel.font = [UIFont systemFontOfSize:28];
|
||
|
self.creditLabel.textColor =mainColor;
|
||
|
self.creditLabel.textAlignment = 1;
|
||
|
self.creditLabel.text = @"0";
|
||
|
[self.view addSubview:self.creditLabel];
|
||
|
|
||
|
|
||
|
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake((SWIDTH-CGRectGetWidth(self.creditLabel.frame))/2, self.creditLabel.frame.origin.y- 21 -11,CGRectGetWidth(self.creditLabel.frame) , 21)];
|
||
|
tempLabel.text = @"步数";
|
||
|
tempLabel.textAlignment = 1;
|
||
|
tempLabel.font = [UIFont systemFontOfSize:13];
|
||
|
[self.view addSubview:tempLabel];
|
||
|
|
||
|
self.editingGoalStepBtn = [UIButton buttonWithType:UIButtonTypeSystem];
|
||
|
[self.editingGoalStepBtn setImage:[UIImage imageNamed:@"icon_editor_orange"] forState:0];
|
||
|
self.editingGoalStepBtn.frame = CGRectMake((SWIDTH-CGRectGetWidth(self.creditLabel.frame))/2, self.creditLabel.frame.origin.y + 21 +11, CGRectGetWidth(self.creditLabel.frame), 21);
|
||
|
[self.editingGoalStepBtn setTitle:[NSString stringWithFormat:@"目标:%d",self.infoStep.target.intValue] forState:0];
|
||
|
[self.editingGoalStepBtn setTintColor:mainColor];
|
||
|
[self.editingGoalStepBtn setTitleColor:[UIColor blackColor] forState:0];
|
||
|
[self.editingGoalStepBtn addTarget:self action:@selector(changeGoalStepNumAction:) forControlEvents:UIControlEventTouchUpInside];
|
||
|
[self.view addSubview:self.editingGoalStepBtn];
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
- (IBAction)dayBtnAction:(UIButton *)sender {
|
||
|
|
||
|
NSMutableDictionary * params = [NSMutableDictionary dictionary];
|
||
|
|
||
|
if([sender isEqual:self.beforeDayBtn]){ //按了前一天的按钮
|
||
|
NSString *paramsDay;
|
||
|
if([self.dayTimeBtn.titleLabel.text isEqualToString:@"今天"]){
|
||
|
//昨天
|
||
|
paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24];
|
||
|
|
||
|
[self setDayTimeLabelText: @"昨天"];
|
||
|
}else if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){
|
||
|
|
||
|
paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 2 * 60*60*24];
|
||
|
|
||
|
[self setDayTimeLabelText: paramsDay];
|
||
|
}else{
|
||
|
//当前位置的天数转换成的时间戳
|
||
|
NSTimeInterval tempTime = [myHelper getDateWithStr:self.dayTimeBtn.titleLabel.text dateFormat:@"yyyy-MM-dd"].timeIntervalSince1970;
|
||
|
paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:tempTime - 60*60*24];
|
||
|
|
||
|
[self setDayTimeLabelText: paramsDay];
|
||
|
}
|
||
|
|
||
|
[params setValue:paramsDay forKey:@"date"];
|
||
|
|
||
|
}else if([sender isEqual:self.afterDayBtn]){
|
||
|
//后一天
|
||
|
if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){
|
||
|
[self setDayTimeLabelText:@"今天"];
|
||
|
params = nil;
|
||
|
|
||
|
}else{
|
||
|
//当前位置的天数转换成的时间戳
|
||
|
NSTimeInterval tempTime = [myHelper getDateWithStr:self.dayTimeBtn.titleLabel.text dateFormat:@"yyyy-MM-dd"].timeIntervalSince1970;
|
||
|
NSString *paramsDay = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:tempTime + 60*60*24];
|
||
|
//对比昨天和今天
|
||
|
//昨天
|
||
|
NSString *yesterday = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24];
|
||
|
//今天
|
||
|
NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970];
|
||
|
if([paramsDay isEqualToString:yesterday]){
|
||
|
[self setDayTimeLabelText:@"昨天"];
|
||
|
|
||
|
}else if([paramsDay isEqualToString:today]){
|
||
|
[self setDayTimeLabelText:@"今天"];
|
||
|
}else{
|
||
|
[self setDayTimeLabelText:paramsDay];
|
||
|
}
|
||
|
[params setValue:paramsDay forKey:@"date"];
|
||
|
}
|
||
|
|
||
|
}else{
|
||
|
params = nil;
|
||
|
}
|
||
|
|
||
|
[self getCurrentStepDateWithParam:params];
|
||
|
|
||
|
}
|
||
|
-(void)setDayTimeLabelText:(NSString*)day{
|
||
|
[self.dayTimeBtn setTitle:day forState:0];
|
||
|
if ([day isEqualToString:@"今天"]) {
|
||
|
//可以设置 目标步数
|
||
|
[self.editingGoalStepBtn setImage:[UIImage imageNamed:@"icon_editor_orange"] forState:0];
|
||
|
[self setBtnBadRoGoodFlag:YES WithBtn:self.editingGoalStepBtn];
|
||
|
[self setBtnBadRoGoodFlag:NO WithBtn:self.afterDayBtn];
|
||
|
}else{
|
||
|
//不能设置 目标步数
|
||
|
[self.editingGoalStepBtn setImage:nil forState:0];
|
||
|
[self setBtnBadRoGoodFlag:NO WithBtn:self.editingGoalStepBtn];
|
||
|
[self setBtnBadRoGoodFlag:YES WithBtn:self.afterDayBtn];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
查询 当前日期 的计步数据
|
||
|
*/
|
||
|
-(void)getCurrentStepDateWithParam:(NSMutableDictionary*)params{
|
||
|
// 查询我的排行榜
|
||
|
if (!params) {
|
||
|
|
||
|
params = [NSMutableDictionary dictionary];
|
||
|
if([self.dayTimeBtn.titleLabel.text isEqualToString:@"今天"]){
|
||
|
//今天
|
||
|
NSString *today = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970];
|
||
|
[params setValue:today forKey:@"date"];
|
||
|
}else if([self.dayTimeBtn.titleLabel.text isEqualToString:@"昨天"]){
|
||
|
//昨天
|
||
|
NSString *yesterday = [myHelper getDateFormatWithStr:@"yyyy-MM-dd" timeInterval:[NSDate date].timeIntervalSince1970 - 60*60*24];
|
||
|
[params setValue:yesterday forKey:@"date"];
|
||
|
}else{
|
||
|
[params setValue:self.dayTimeBtn.titleLabel.text forKey:@"date"];
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
WEAKSELF
|
||
|
[self.infoStep getObjsParams: params Success:^(Step *data) {
|
||
|
weakSelf.infoStep = data;
|
||
|
[weakSelf.editingGoalStepBtn setTitle:[NSString stringWithFormat:@"目标:%@",weakSelf.infoStep.target] forState:0];
|
||
|
[weakSelf reLoadAnimation];
|
||
|
} failure:^(NSError *error) {
|
||
|
|
||
|
}];
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
设置按钮不可选且半透明
|
||
|
@param flag Bad is NO , Good is YES
|
||
|
@param button button
|
||
|
*/
|
||
|
-(void)setBtnBadRoGoodFlag:(BOOL)flag WithBtn:(UIButton*) button{
|
||
|
if(flag){
|
||
|
[button setAlpha:1];
|
||
|
[button setEnabled:YES];
|
||
|
}else{
|
||
|
[button setAlpha:0.5];
|
||
|
[button setEnabled:NO];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
-(void)changeGoalStepNumAction:(UIButton*)sender{
|
||
|
|
||
|
if(!self.editingGoalView){
|
||
|
self.editingGoalView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, 50)];
|
||
|
self.editingGoalView.backgroundColor = [UIColor whiteColor];
|
||
|
CGFloat alertViewWidth = (320.f - 20*2 - 20*2);
|
||
|
self.editingGoalTextField = [[UITextField alloc] initWithFrame:CGRectMake((ScreenWidth - alertViewWidth)/2, 1, alertViewWidth, 48)];
|
||
|
self.editingGoalTextField.borderStyle = UITextBorderStyleRoundedRect;
|
||
|
self.editingGoalTextField.layer.borderColor = RGB(229, 229, 229).CGColor;
|
||
|
self.editingGoalTextField.backgroundColor = RGB(250, 250, 250);
|
||
|
self.editingGoalTextField.placeholder = @"请输入目标步数";
|
||
|
self.editingGoalTextField.keyboardType = UIKeyboardTypeNumberPad;
|
||
|
[self.editingGoalView addSubview:self.editingGoalTextField];
|
||
|
}
|
||
|
self.editingGoalTextField.text = self.infoStep.target.stringValue;
|
||
|
|
||
|
WEAKSELF
|
||
|
LGAlertView *alertView = [[LGAlertView alloc] initWithViewAndTitle:@"目标步数" message:@"" style:LGAlertViewStyleAlert view:self.editingGoalView buttonTitles:@[@"确定"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) {
|
||
|
[weakSelf.editingGoalTextField resignFirstResponder];
|
||
|
weakSelf.infoStep.target = [NSNumber numberWithInt:weakSelf.editingGoalTextField.text.intValue];
|
||
|
[weakSelf.editingGoalStepBtn setTitle:[NSString stringWithFormat:@"目标步数:%@",weakSelf.infoStep.target] forState:0];
|
||
|
|
||
|
xLog(@"修改 目标步数 %@",weakSelf.infoStep.target);
|
||
|
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
|
||
|
[dic setValue:weakSelf.infoStep.target forKey:@"target"];
|
||
|
[weakSelf.infoStep postGoalStepParams:dic Success:^(Step *data) {
|
||
|
[weakSelf getCurrentStepDateWithParam:nil];
|
||
|
|
||
|
} failure:^(NSError *error) {
|
||
|
[weakSelf getCurrentStepDateWithParam:nil];
|
||
|
}];
|
||
|
|
||
|
} cancelHandler:^(LGAlertView *alertView) {
|
||
|
[weakSelf.editingGoalTextField resignFirstResponder];
|
||
|
} destructiveHandler:nil];
|
||
|
|
||
|
[alertView showAnimated:YES completionHandler:nil];
|
||
|
|
||
|
|
||
|
// LGAlertView *alertView = [[LGAlertView alloc] initWithTextFieldsAndTitle:@"目标步数" message:@"" numberOfTextFields:1 textFieldsSetupHandler:^(UITextField *textField, NSUInteger index) {
|
||
|
//
|
||
|
// textField.delegate = weakSelf;
|
||
|
// textField.keyboardType = UIKeyboardTypeNumberPad;
|
||
|
//
|
||
|
// } buttonTitles:@[@"确定"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) {
|
||
|
//
|
||
|
//
|
||
|
// weakSelf.infoStep.target = [NSNumber numberWithInt:[[alertView.textFieldsArray.firstObject text] intValue]];
|
||
|
// [weakSelf.editingGoalStepBtn setTitle:[NSString stringWithFormat:@"目标步数:%@",weakSelf.infoStep.target] forState:0];
|
||
|
//
|
||
|
// xLog(@"修改 目标步数 %@",weakSelf.infoStep.target);
|
||
|
// NSMutableDictionary *dic = [NSMutableDictionary dictionary];
|
||
|
// [dic setValue:weakSelf.infoStep.target forKey:@"target"];
|
||
|
// [weakSelf.infoStep postGoalStepParams:dic Success:^(Step *data) {
|
||
|
// [weakSelf reLoadAnimation];
|
||
|
// } failure:^(NSError *error) {
|
||
|
// [weakSelf reLoadAnimation];
|
||
|
// }];
|
||
|
//
|
||
|
// } cancelHandler:nil destructiveHandler:nil];
|
||
|
//
|
||
|
// [alertView showAnimated:YES completionHandler:nil];
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//MARK: UITextFieldDelegate 限制字数 和输入的 字符
|
||
|
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
|
||
|
|
||
|
|
||
|
if([@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" containsString:string]){
|
||
|
// 最终的结果
|
||
|
NSString *str = textField.text;
|
||
|
NSString *resultStr = [str stringByReplacingCharactersInRange:range withString:string];
|
||
|
|
||
|
if(resultStr.length > 5){
|
||
|
return NO;
|
||
|
}else{
|
||
|
return YES;
|
||
|
}
|
||
|
}else{
|
||
|
if([string isEqualToString:@""]){
|
||
|
return YES;
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
@end
|