小说绘上架版本
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// WXYZ_CountDownView.h
|
||||
// WXReader
|
||||
//
|
||||
// Created by Andrew on 2019/4/9.
|
||||
// Copyright © 2019 Andrew. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface WXYZ_CountDownView : UIView
|
||||
|
||||
@property (nonatomic, assign) NSInteger timeStamp;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,249 @@
|
||||
//
|
||||
// WXYZ_CountDownView.m
|
||||
// WXReader
|
||||
//
|
||||
// Created by Andrew on 2019/4/9.
|
||||
// Copyright © 2019 Andrew. All rights reserved.
|
||||
//
|
||||
|
||||
#import "WXYZ_CountDownView.h"
|
||||
#import "WXYZ_GCDTimer.h"
|
||||
|
||||
@interface WXYZ_CountDownView ()
|
||||
|
||||
@property (nonatomic, strong) UILabel *countDownLabel;
|
||||
|
||||
@property (nonatomic, strong) UILabel *endActiveLabel;
|
||||
|
||||
@property (nonatomic, strong) UILabel *hoursLabel;
|
||||
|
||||
@property (nonatomic, strong) UILabel *minutesLabel;
|
||||
|
||||
@property (nonatomic, strong) UILabel *secondsLabel;
|
||||
|
||||
@property (nonatomic, strong) UILabel *hoursPointLabel;
|
||||
|
||||
@property (nonatomic, strong) UILabel *minutesPointLabel;
|
||||
|
||||
@property (nonatomic, strong) WXYZ_GCDTimer *timer;
|
||||
|
||||
@end
|
||||
|
||||
@implementation WXYZ_CountDownView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self createSubViews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)createSubViews
|
||||
{
|
||||
self.countDownLabel.hidden = NO;
|
||||
[self addSubview:self.countDownLabel];
|
||||
|
||||
self.endActiveLabel.hidden = YES;
|
||||
[self addSubview:self.endActiveLabel];
|
||||
|
||||
[self.countDownLabel addSubview:self.hoursLabel];
|
||||
[self.countDownLabel addSubview:self.minutesLabel];
|
||||
[self.countDownLabel addSubview:self.secondsLabel];
|
||||
[self.countDownLabel addSubview:self.hoursPointLabel];
|
||||
[self.countDownLabel addSubview:self.minutesPointLabel];
|
||||
|
||||
[self.hoursLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(0);
|
||||
make.top.mas_equalTo(0);
|
||||
make.width.mas_equalTo(CGFLOAT_MIN);
|
||||
make.height.mas_equalTo(self.mas_height);
|
||||
}];
|
||||
|
||||
[self.minutesLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.hoursLabel.mas_right).with.offset(5);
|
||||
make.top.mas_equalTo(self.hoursLabel.mas_top);
|
||||
make.width.mas_equalTo(CGFLOAT_MIN);
|
||||
make.height.mas_equalTo(self.hoursLabel.mas_height);
|
||||
}];
|
||||
|
||||
[self.secondsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.minutesLabel.mas_right).with.offset(5);
|
||||
make.top.mas_equalTo(self.hoursLabel.mas_top);
|
||||
make.width.mas_equalTo(CGFLOAT_MIN);
|
||||
make.height.mas_equalTo(self.hoursLabel.mas_height);
|
||||
}];
|
||||
|
||||
[self.hoursPointLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.hoursLabel.mas_right);
|
||||
make.top.mas_equalTo(self.hoursLabel.mas_top);
|
||||
make.width.mas_equalTo(5);
|
||||
make.height.mas_equalTo(self.hoursLabel.mas_height);
|
||||
}];
|
||||
|
||||
[self.minutesPointLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.minutesLabel.mas_right);
|
||||
make.top.mas_equalTo(self.minutesLabel.mas_top);
|
||||
make.width.mas_equalTo(5);
|
||||
make.height.mas_equalTo(self.minutesLabel.mas_height);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)setTimeStamp:(NSInteger)timeStamp
|
||||
{
|
||||
_timeStamp = timeStamp;
|
||||
|
||||
if (_timeStamp != 0) {
|
||||
[self.timer stopTimer];
|
||||
[self.timer startTimerWithTimeDuration:timeStamp];
|
||||
} else {
|
||||
self.countDownLabel.hidden = YES;
|
||||
self.endActiveLabel.hidden = NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)getDetailTimeWithTimeStamp:(NSInteger)timeStamp
|
||||
{
|
||||
NSInteger ms = timeStamp;
|
||||
NSInteger ss = 1;
|
||||
NSInteger mi = ss * 60;
|
||||
NSInteger hh = mi * 60;
|
||||
|
||||
// 剩余的
|
||||
NSInteger hour = (ms) / hh;// 时
|
||||
NSInteger minute = (ms - hour * hh) / mi;// 分
|
||||
NSInteger second = (ms - hour * hh - minute * mi) / ss;// 秒
|
||||
|
||||
self.hoursLabel.text = [self formatTimeStringWithTimeStamp:hour];
|
||||
self.minutesLabel.text = [self formatTimeStringWithTimeStamp:minute];
|
||||
self.secondsLabel.text = [self formatTimeStringWithTimeStamp:second];
|
||||
self.hoursPointLabel.hidden = NO;
|
||||
self.minutesPointLabel.hidden = NO;
|
||||
|
||||
[self.hoursLabel mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.hoursLabel]);
|
||||
}];
|
||||
|
||||
[self.minutesLabel mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.minutesLabel]);
|
||||
}];
|
||||
|
||||
[self.secondsLabel mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.secondsLabel]);
|
||||
}];
|
||||
}
|
||||
|
||||
- (NSString *)formatTimeStringWithTimeStamp:(NSInteger)timeStamp
|
||||
{
|
||||
return [[NSString stringWithFormat:@"%zd", timeStamp] intValue] < 10?[NSString stringWithFormat:@"0%zd", timeStamp]:[NSString stringWithFormat:@"%zd", timeStamp];
|
||||
}
|
||||
|
||||
- (UILabel *)countDownLabel
|
||||
{
|
||||
if (!_countDownLabel) {
|
||||
_countDownLabel = [self basicLabel];
|
||||
}
|
||||
return _countDownLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)endActiveLabel
|
||||
{
|
||||
if (!_endActiveLabel) {
|
||||
_endActiveLabel = [self basicCountDownLabel];
|
||||
_endActiveLabel.font = kFont12;
|
||||
_endActiveLabel.text = TFLocalizedString(@"活动已结束");
|
||||
}
|
||||
return _endActiveLabel;
|
||||
}
|
||||
|
||||
- (WXYZ_GCDTimer *)timer
|
||||
{
|
||||
if (!_timer) {
|
||||
WS(weakSelf)
|
||||
_timer = [[WXYZ_GCDTimer alloc] initCountdownTimerWithTimeDuration:10 immediatelyCallBack:YES];
|
||||
_timer.timerRunningBlock = ^(NSUInteger runTimes, CGFloat currentTime) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
weakSelf.endActiveLabel.hidden = YES;
|
||||
weakSelf.countDownLabel.hidden = NO;
|
||||
[weakSelf getDetailTimeWithTimeStamp:currentTime];
|
||||
});
|
||||
};
|
||||
_timer.timerFinishedBlock = ^{
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
weakSelf.countDownLabel.hidden = YES;
|
||||
weakSelf.endActiveLabel.hidden = NO;
|
||||
});
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_EndOfTimeLimit object:nil];
|
||||
};
|
||||
}
|
||||
return _timer;
|
||||
}
|
||||
|
||||
- (UILabel *)hoursLabel
|
||||
{
|
||||
if (!_hoursLabel) {
|
||||
_hoursLabel = [self basicCountDownLabel];
|
||||
}
|
||||
return _hoursLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)minutesLabel
|
||||
{
|
||||
if (!_minutesLabel) {
|
||||
_minutesLabel = [self basicCountDownLabel];
|
||||
}
|
||||
return _minutesLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)secondsLabel
|
||||
{
|
||||
if (!_secondsLabel) {
|
||||
_secondsLabel = [self basicCountDownLabel];
|
||||
}
|
||||
return _secondsLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)hoursPointLabel
|
||||
{
|
||||
if (!_hoursPointLabel) {
|
||||
_hoursPointLabel = [self basicLabel];
|
||||
_hoursPointLabel.hidden = YES;
|
||||
_hoursPointLabel.text = @":";
|
||||
_hoursPointLabel.textColor = kBlackColor;
|
||||
_hoursPointLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _hoursPointLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)minutesPointLabel
|
||||
{
|
||||
if (!_minutesPointLabel) {
|
||||
_minutesPointLabel = [self basicLabel];
|
||||
_minutesPointLabel.hidden = YES;
|
||||
_minutesPointLabel.text = @":";
|
||||
_minutesPointLabel.textColor = kBlackColor;
|
||||
_minutesPointLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _minutesPointLabel;
|
||||
}
|
||||
|
||||
- (UILabel *)basicLabel
|
||||
{
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.textAlignment = NSTextAlignmentCenter;
|
||||
label.numberOfLines = 1;
|
||||
label.font = kFont12;
|
||||
return label;
|
||||
}
|
||||
|
||||
- (UILabel *)basicCountDownLabel
|
||||
{
|
||||
UILabel *label = [self basicLabel];
|
||||
label.layer.cornerRadius = 4;
|
||||
label.backgroundColor = kRedColor;
|
||||
label.textColor = kWhiteColor;
|
||||
label.clipsToBounds = YES;
|
||||
return label;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user