|
|
// |
|
|
// HomeMovementTableViewCell.m |
|
|
// tongxin |
|
|
// |
|
|
// Created by ecell on 2023/6/20. |
|
|
// Copyright © 2023 xTT. All rights reserved. |
|
|
// |
|
|
|
|
|
#import "HomeMovementTableViewCell.h" |
|
|
#import "XFGradientProgressView.h" |
|
|
#import "UIViewExt.h" |
|
|
|
|
|
@interface HomeMovementTableViewCell () |
|
|
|
|
|
@property (nonatomic ,weak) UILabel *numLabel; |
|
|
@property (nonatomic ,weak) UILabel *calorieLabel; |
|
|
@property (nonatomic ,weak) UILabel *distanceLabel; |
|
|
|
|
|
/// 步数 |
|
|
@property (nonatomic ,weak) XFGradientProgressView *numProgress; |
|
|
/// 热量 |
|
|
@property (nonatomic ,weak) XFGradientProgressView *calorieProgress; |
|
|
/// 总里程 |
|
|
@property (nonatomic ,weak) XFGradientProgressView *distanceProgress; |
|
|
|
|
|
|
|
|
@end |
|
|
|
|
|
@implementation HomeMovementTableViewCell |
|
|
|
|
|
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier |
|
|
{ |
|
|
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; |
|
|
if (self) |
|
|
{ |
|
|
self.selectionStyle = UITableViewCellSelectionStyleNone; |
|
|
self.backgroundColor = KKClearColor; |
|
|
[self subCellView]; |
|
|
} |
|
|
|
|
|
return self; |
|
|
} |
|
|
|
|
|
- (void)setStepData:(NSDictionary *)stepData |
|
|
{ |
|
|
_stepData = stepData; |
|
|
self.numLabel.text = F(@"%@", stepData[@"num"]); |
|
|
self.calorieLabel.text = F(@"%@", [self notRounding:stepData[@"calorie"] afterPoint:3]); |
|
|
self.distanceLabel.text = F(@"%@", [self notRounding:stepData[@"distance"] afterPoint:3]); |
|
|
NSNumber *step = stepData[@"num"]; |
|
|
CGFloat a = step.floatValue/10000; |
|
|
[self.numProgress StartAnimationToProgress:a durationTime:0 sImgName:@"icon_step"]; |
|
|
[self.distanceProgress StartAnimationToProgress:a durationTime:0 sImgName:@"icon_distance"]; |
|
|
[self.calorieProgress StartAnimationToProgress:a durationTime:0 sImgName:@"icon_calories"]; |
|
|
} |
|
|
|
|
|
- (void)subCellView |
|
|
{ |
|
|
UIView *bgView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:10 borderWidth:0 borderColor:KKWhiteColorColor]; |
|
|
[self.contentView addSubview:bgView]; |
|
|
[bgView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.left.right.equalTo(self.contentView).inset(15); |
|
|
make.top.equalTo(self.contentView).offset(15); |
|
|
make.height.mas_equalTo(166); |
|
|
}]; |
|
|
|
|
|
UILabel *titleLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(14) textColor:KKTextColor text:@"运动数据" Radius:0]; |
|
|
[bgView addSubview:titleLabel]; |
|
|
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.left.equalTo(bgView).offset(10); |
|
|
make.top.equalTo(bgView).offset(13); |
|
|
}]; |
|
|
|
|
|
// UIImageView *bgImg = [UIImageView new]; |
|
|
// bgImg.frame = CGRectMake(18, 43, 125, 110); |
|
|
// bgImg.image = ImageName_(@"circle_bg"); |
|
|
// [bgView addSubview:bgImg]; |
|
|
//// [bgImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
//// make.top.equalTo(titleLabel.mas_bottom).offset(17); |
|
|
//// make.left.equalTo(bgView).offset(18); |
|
|
//// make.size.mas_equalTo(CGSizeMake(125, 110)); |
|
|
//// }]; |
|
|
|
|
|
/// 步数 |
|
|
XFGradientProgressView *numProgress = [[XFGradientProgressView alloc] initWithFrame:CGRectMake(23, 40, 115, 115) startColor:RGB(35, 128, 255) endColor:RGB(35, 128, 255) backProgressColor:RGBA(35, 128, 255, .4)]; |
|
|
self.numProgress = numProgress; |
|
|
[bgView addSubview:numProgress]; |
|
|
[numProgress StartAnimationToProgress:0 durationTime:0 sImgName:@"icon_step"]; |
|
|
|
|
|
/// 热量 |
|
|
XFGradientProgressView *distanceProgress = [[XFGradientProgressView alloc] initWithFrame:CGRectMake(numProgress.left+12.5, numProgress.top+10, numProgress.width-25, numProgress.height-20) startColor:RGB(253, 161, 40) endColor:RGB(253, 161, 40) backProgressColor:RGBA(253, 161, 40, .4)]; |
|
|
self.distanceProgress = distanceProgress; |
|
|
[bgView addSubview:distanceProgress]; |
|
|
[distanceProgress StartAnimationToProgress:0 durationTime:0 sImgName:@"icon_distance"]; |
|
|
|
|
|
/// 总里程 |
|
|
XFGradientProgressView *calorieProgress = [[XFGradientProgressView alloc] initWithFrame:CGRectMake(distanceProgress.left+12.5, distanceProgress.top+10, distanceProgress.width-25, distanceProgress.height-19) startColor:RGB(255, 0, 96) endColor:RGB(255, 0, 96) backProgressColor:RGBA(255, 0, 96, .4)]; |
|
|
self.calorieProgress = calorieProgress; |
|
|
[bgView addSubview:calorieProgress]; |
|
|
[calorieProgress StartAnimationToProgress:0 durationTime:0 sImgName:@"icon_calories"]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// UIImageView *img1 = [UIImageView new]; |
|
|
// img1.image = ImageName_(@"circle_step"); |
|
|
// [bgView addSubview:img1]; |
|
|
// [img1 mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
// make.top.equalTo(titleLabel.mas_bottom).offset(17); |
|
|
// make.left.equalTo(bgView).offset(18); |
|
|
// make.size.mas_equalTo(CGSizeMake(125, 110)); |
|
|
// }]; |
|
|
// |
|
|
// UIImageView *img2 = [UIImageView new]; |
|
|
// img2.image = ImageName_(@"circle_distance"); |
|
|
// [bgView addSubview:img2]; |
|
|
// [img2 mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
// make.top.equalTo(img1).offset(12.5); |
|
|
// make.left.equalTo(img1).offset(12.5); |
|
|
// make.right.equalTo(img1.mas_right).inset(12.5); |
|
|
// make.bottom.equalTo(img1.mas_bottom).inset(10); |
|
|
// }]; |
|
|
// UIImageView *img3 = [UIImageView new]; |
|
|
// img3.image = ImageName_(@"circle_calories"); |
|
|
// [bgView addSubview:img3]; |
|
|
// [img3 mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
// make.top.equalTo(img2).offset(12.5); |
|
|
// make.left.equalTo(img2).offset(12.5); |
|
|
// make.right.equalTo(img2.mas_right).inset(12.5); |
|
|
// make.bottom.equalTo(img2.mas_bottom).inset(10); |
|
|
// }]; |
|
|
|
|
|
NSArray *titleArr = @[@"步数",@"热量",@"总里程"]; |
|
|
NSArray *unitArr = @[@"步 ",@"千卡",@"公里"]; |
|
|
NSArray *colorArr = @[mainColor,RGB(255, 0, 96),RGB(253, 161, 40)]; |
|
|
CGFloat hh = 166/3; |
|
|
for (int i = 0; i < titleArr.count; i++) |
|
|
{ |
|
|
UILabel *tLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:Font_(16) textColor:KKTextColor text:titleArr[i] Radius:0]; |
|
|
[bgView addSubview:tLabel]; |
|
|
[tLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.left.equalTo(bgView).offset(175); |
|
|
make.top.equalTo(bgView).offset(i*hh); |
|
|
make.height.mas_equalTo(hh); |
|
|
make.width.mas_equalTo(50); |
|
|
}]; |
|
|
|
|
|
UIImageView *point = [UIImageView new]; |
|
|
point.backgroundColor = colorArr[i]; |
|
|
point.layer.cornerRadius = 2.5; |
|
|
point.layer.masksToBounds = YES; |
|
|
[bgView addSubview:point]; |
|
|
[point mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.right.equalTo(tLabel.mas_left).inset(8); |
|
|
make.centerY.equalTo(tLabel); |
|
|
make.size.mas_equalTo(CGSizeMake(5, 5)); |
|
|
}]; |
|
|
|
|
|
if (i < titleArr.count-1) |
|
|
{ |
|
|
UIImageView *line = [UIImageView new]; |
|
|
line.backgroundColor = RGB(235, 235, 235); |
|
|
[bgView addSubview:line]; |
|
|
[line mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.left.equalTo(point.mas_left); |
|
|
make.right.equalTo(bgView.mas_right).inset(12); |
|
|
make.top.equalTo(tLabel.mas_bottom); |
|
|
make.height.mas_equalTo(1); |
|
|
}]; |
|
|
} |
|
|
|
|
|
UILabel *unitLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:Font_(12) textColor:RGB(133, 133, 133) text:unitArr[i] Radius:0]; |
|
|
[bgView addSubview:unitLabel]; |
|
|
[unitLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.right.equalTo(bgView.mas_right).inset(18); |
|
|
make.centerY.equalTo(tLabel); |
|
|
make.width.mas_equalTo(25); |
|
|
}]; |
|
|
|
|
|
|
|
|
UILabel *textLabel = [UICommon ui_label:CGRectZero lines:1 align:NSTextAlignmentRight font:FontBold_(24) textColor:KKTextColor text:@"0" Radius:0]; |
|
|
if (i == 0) |
|
|
self.numLabel = textLabel; |
|
|
else if (i == 1) |
|
|
self.calorieLabel = textLabel; |
|
|
else if (i == 2) |
|
|
self.distanceLabel = textLabel; |
|
|
[bgView addSubview:textLabel]; |
|
|
[textLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
|
make.right.equalTo(unitLabel.mas_left).inset(10); |
|
|
make.left.equalTo(tLabel.mas_right).offset(10); |
|
|
make.centerY.equalTo(tLabel); |
|
|
}]; |
|
|
} |
|
|
} |
|
|
|
|
|
- (NSString*)notRounding:(id)price afterPoint:(NSInteger)position |
|
|
{ |
|
|
//生成format格式 |
|
|
NSString*format = [NSString stringWithFormat:@"%%.%ldf",(long)position]; |
|
|
CGFloat value = 0.; |
|
|
//string 和 number 兼容 |
|
|
if([price respondsToSelector:@selector(doubleValue)]) |
|
|
{ |
|
|
value = [price doubleValue]; |
|
|
} |
|
|
NSString *number = [NSString stringWithFormat:format,value]; |
|
|
// 去掉小数点后面的无效0 |
|
|
NSString * outNumber = [NSString stringWithFormat:@"%@",[[NSDecimalNumber decimalNumberWithString:number] stringValue]]; |
|
|
return outNumber; |
|
|
} |
|
|
|
|
|
- (void)awakeFromNib { |
|
|
[super awakeFromNib]; |
|
|
// Initialization code |
|
|
} |
|
|
|
|
|
- (void)setSelected:(BOOL)selected animated:(BOOL)animated { |
|
|
[super setSelected:selected animated:animated]; |
|
|
|
|
|
// Configure the view for the selected state |
|
|
} |
|
|
|
|
|
@end
|
|
|
|