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.
 
 
 
 

224 lines
9.0 KiB

//
// 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