OC Extension YSCountDown(cell倒計時-用於秒殺活動)
阿新 • • 發佈:2021-02-10
技術標籤:UI的封裝iosobjective-cswiftxcode
**
一直覺得自己寫的不是技術,而是情懷,一個個的教程是自己這一路走來的痕跡。靠專業技能的成功是最具可複製性的,希望我的這條路能讓你們少走彎路,希望我能幫你們抹去知識的蒙塵,希望我能幫你們理清知識的脈絡,希望未來技術之巔上有你們也有我。
**
使用
@property(nonatomic,strong) YSCountDown *countDown;
賦值時間要寫在獲取資料完成的時候 重新整理tableview之前
#pragma mark 重新整理tableveiw的代理
- (void)fastActivityViewModel: (FastActivityViewModel *)view success:(FastActivityBaseModel *)model{
//獲取資料成功計算時間
if (self.viewModel.list != nil && ![self.viewModel.list isKindOfClass:[NSNull class]] && self.viewModel.list.count != 0) {
self.countDown = [[YSCountDown alloc] initWith:self.tableview :self.viewModel. list :self.viewModel.canRealoadList];
self.countDown.isPlusTime = NO;
__weak typeof (self) weakSelf = self;
//倒計時結束出來重新整理狀態
self.countDown.block = ^(NSInteger tag) {
[weakSelf.viewModel.list removeAllObjects];
[weakSelf.viewModel.canRealoadList removeAllObjects];
[weakSelf. viewModel getFastActivity];
};
}
[self.tableview reloadData];
[self.tableview reloadEmptyDataSet];
}
- (void)dealloc {
/// 2.銷燬
[self.countDown destoryTimer];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
FastActiveCell *cell=[FastActiveCell cellWithTableView:tableView];
cell.stateLabel.text = self.viewModel.model.s_k_goods_list[indexPath.item].showTitle;
cell.model = self.viewModel.model.s_k_goods_list[indexPath.item];
/// 3.繫結tag
cell.tag = indexPath.row;
cell.timeLabel.tag = 1314;
cell.timeLabel.text = [self.countDown countDownWithPER_SEC:indexPath :self.viewModel.canRealoadList];
return cell;
}
額外說明一下:
1.賦值時間要寫在獲取資料完成的時候 重新整理tableview之前
2.傳遞進去的的陣列是一個10位時間戳來的。下面的方法是計算時間的方法來的 self.viewModel.list
3. self.viewModel.canRealoadList是用來標誌倒計時結束是夠允許重新整理
原始模型
計算好的時間模型
-(void)calculateShowTimeModel:(FastActivityBaseModel *)model{
for (int i = 0; i < model.s_k_goods_list.count; i++) {
//當前時間大於開始時間 有可能結束 有可能開始
if ([FastActivityViewModel getNowTimestamp] > [model.s_k_goods_list[i].kill_start_time integerValue]) {
[self.list addObject:model.s_k_goods_list[i].kill_end_time];
//當前時間大於結束時間 已結束
if ([FastActivityViewModel getNowTimestamp] > [model.s_k_goods_list[i].kill_end_time integerValue]) {
model.s_k_goods_list[i].activeState = @"已結束";
model.s_k_goods_list[i].showTitle = @"";
[self.canRealoadList addObject:@"不可以"];
}else{//當前時間小於結束時間 進行中
model.s_k_goods_list[i].activeState = @"進行中";
model.s_k_goods_list[i].showTitle = @"距結束";
[self.canRealoadList addObject:@"可以"];
}
}else{ //當前時間小於開始時間 未開始
[self.list addObject:model.s_k_goods_list[i].kill_start_time];
model.s_k_goods_list[i].activeState = @"未開始";
model.s_k_goods_list[i].showTitle = @"距開始";
[self.canRealoadList addObject:@"可以"];
}
}
}
效果