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.
92 lines
2.7 KiB
92 lines
2.7 KiB
1 year ago
|
//
|
||
|
// JSToastDialogs.m
|
||
|
// tongxin
|
||
|
//
|
||
|
// Created by ecell on 2021/6/9.
|
||
|
// Copyright © 2021 xTT. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "JSToastDialogs.h"
|
||
|
|
||
|
|
||
|
static int changeCount;
|
||
|
|
||
|
@implementation JSToastDialogs
|
||
|
// 实现声明单例方法 GCD
|
||
|
+ (instancetype)shareInstance {
|
||
|
static JSToastDialogs *singleton = nil;
|
||
|
static dispatch_once_t onceToken;
|
||
|
dispatch_once(&onceToken, ^{
|
||
|
singleton = [[JSToastDialogs alloc] init];
|
||
|
});
|
||
|
return singleton;
|
||
|
}
|
||
|
// 初始化方法
|
||
|
- (instancetype)init {
|
||
|
self = [super init];
|
||
|
if (self) {
|
||
|
dialogsLabel = [[DialogsLabel alloc]init];
|
||
|
countTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime) userInfo:nil repeats:YES];
|
||
|
countTimer.fireDate = [NSDate distantFuture];//关闭定时器
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
/**
|
||
|
* 弹出并显示JSToastDialogs
|
||
|
* @param message 显示的文本内容
|
||
|
* @param duration 显示时间
|
||
|
*/
|
||
|
- (void)makeToast:(NSString *)message duration:(CGFloat)duration{
|
||
|
if ([message length] == 0) {
|
||
|
return;
|
||
|
}
|
||
|
[dialogsLabel setMessageText:message];
|
||
|
[[[UIApplication sharedApplication] keyWindow] addSubview:dialogsLabel];
|
||
|
dialogsLabel.alpha = 0.8;
|
||
|
countTimer.fireDate = [NSDate distantPast];//开启定时器
|
||
|
changeCount = duration;
|
||
|
}
|
||
|
//定时器回调方法
|
||
|
- (void)changeTime {
|
||
|
if(changeCount-- <= 0){
|
||
|
countTimer.fireDate = [NSDate distantFuture]; //关闭定时器
|
||
|
[UIView animateWithDuration:0.2f animations:^{
|
||
|
dialogsLabel.alpha = 0;
|
||
|
} completion:^(BOOL finished) {
|
||
|
[dialogsLabel removeFromSuperview];
|
||
|
}];
|
||
|
}
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
#pragma mark - DialogsLabel的方法
|
||
|
@implementation DialogsLabel
|
||
|
//DialogsLabel初始化,为label设置各种属性
|
||
|
- (instancetype)init {
|
||
|
self = [super init];
|
||
|
if (self) {
|
||
|
self.layer.cornerRadius = 8;
|
||
|
self.layer.masksToBounds = YES;
|
||
|
self.backgroundColor = [UIColor blackColor];
|
||
|
self.numberOfLines = 0;
|
||
|
self.textAlignment = NSTextAlignmentCenter;
|
||
|
self.textColor = [UIColor whiteColor];
|
||
|
self.font = [UIFont systemFontOfSize:15];
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
|
||
|
//设置显示的文字
|
||
|
- (void)setMessageText:(NSString *)text {
|
||
|
[self setText:text];
|
||
|
CGRect rect = [self.text boundingRectWithSize:CGSizeMake(ScreenWidth - 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:self.font} context:nil];
|
||
|
CGFloat width = rect.size.width + 20;
|
||
|
CGFloat height = rect.size.height + 20;
|
||
|
CGFloat x = (ScreenWidth-width)/2;
|
||
|
CGFloat y = ScreenHeight-height - 120; // 59-->120
|
||
|
self.frame = CGRectMake(x, y, width, height);
|
||
|
}
|
||
|
|
||
|
@end
|