123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- //
- // TheAlertCtrl.m
- // FornoWorld
- //
- // Created by RD on 2021/12/10.
- //
- #import "TheAlertCtrl.h"
- #import "SPAlertController.h"
- @interface TheAlertCtrl ()<UIPickerViewDataSource,UIPickerViewDelegate>
- @property (nonatomic, weak) UIAlertController *ac;
- @property (nonatomic, strong) NSMutableArray *timerData;
- @end
- @implementation TheAlertCtrl
- + (instancetype)rds_alertWithTitle:(NSString *)title message:(NSString *)message{
-
- TheAlertCtrl *ctrl = [[TheAlertCtrl alloc] init];
-
- UIAlertController *ac = [UIAlertController alertControllerWithTitle:title
- message:message
- preferredStyle:UIAlertControllerStyleAlert];
-
- UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
-
- }];
- [okAction setValue:kDarkTextColor forKey:@"_titleTextColor"];
-
- [ac addAction:okAction];
- ctrl.ac = ac;
-
- // 修改标题字体颜色
- // if (!kNULLString(title)) {
- // NSMutableAttributedString *titleAtt = [[NSMutableAttributedString alloc] initWithString:title];
- // [titleAtt addAttribute:NSForegroundColorAttributeName value:kDarkTextColor range:NSMakeRange(0, title.length)];
- // [titleAtt addAttribute:NSFontAttributeName value:[UIFont rds_titiFontStyle:FontStyle_SemiBold size:18] range:NSMakeRange(0, title.length)];
- // [ac setValue:titleAtt forKey:@"attributedTitle"];
- // }
-
-
- // 修改msg字体颜色
- // if (!kNULLString(message)) {
- // NSMutableAttributedString *msgAtt = [[NSMutableAttributedString alloc] initWithString:message];
- // [msgAtt addAttribute:NSForegroundColorAttributeName value:kDarkTextColor range:NSMakeRange(0, message.length)];
- // [msgAtt addAttribute:NSFontAttributeName value:[UIFont rds_titiFontStyle:FontStyle_Regular size:16] range:NSMakeRange(0, message.length)];
- //
- // NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
- // //paragraph.lineSpacing = 5;// 字体的行间距
- // //paragraph.firstLineHeadIndent = 25.0f;//首行缩进
- // paragraph.alignment = NSTextAlignmentLeft;
- //
- // [msgAtt addAttribute:NSParagraphStyleAttributeName
- // value:paragraph
- // range:NSMakeRange(0, message.length)];
- //
- // [ac setValue:msgAtt forKey:@"attributedMessage"];
- // }
-
-
-
- UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
- NSAssert(window, @"The window is empty");
- // 更新UI要在主线程执行
- dispatch_async(dispatch_get_main_queue(), ^{
- [window.rootViewController presentViewController:ac animated:YES completion:nil];
- });
- return ctrl;
- }
- + (instancetype)rds_alertWithTitle:(NSString *)title message:(NSString *)message cancel:(NSString *)calcel sure:(NSString *)sure cancelColor:(UIColor *)cancelColor sureColor:(UIColor *)sureColor cancelAction:(void (^)(void))cancelActionBlock sureAction:(void (^)(void))sureActionBlock{
-
- // if(!kNULLString(message)){
- // message = [NSString stringWithFormat:@"\n%@",message];
- // }
-
- TheAlertCtrl *ctrl = [[TheAlertCtrl alloc] init];
-
- UIAlertController *ac = [UIAlertController alertControllerWithTitle:title
- message:message
- preferredStyle:UIAlertControllerStyleAlert];
-
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:calcel style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
- if(cancelActionBlock) {
- cancelActionBlock();
- }
- }];
-
-
- UIAlertAction *sureAction = [UIAlertAction actionWithTitle:sure style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
- if (sureActionBlock) {
- sureActionBlock();
- }
- }];
-
- // 修改按钮字体颜色
- if(cancelColor){
- [cancelAction setValue:cancelColor forKey:@"_titleTextColor"];
- }
- if(sureColor){
- [sureAction setValue:sureColor forKey:@"_titleTextColor"];
- }
-
-
- [ac addAction:cancelAction];
- [ac addAction:sureAction];
- ctrl.ac = ac;
- // ac.view.backgroundColor = UIColor.whiteColor;
-
-
- // 修改标题字体颜色
- // NSMutableAttributedString *titleAtt = [[NSMutableAttributedString alloc] initWithString:title];
- // [titleAtt addAttribute:NSForegroundColorAttributeName value:kDarkTextColor range:NSMakeRange(0, title.length)];
- // [titleAtt addAttribute:NSFontAttributeName value:[UIFont rds_titiFontStyle:FontStyle_SemiBold size:18] range:NSMakeRange(0, title.length)];
- // [ac setValue:titleAtt forKey:@"attributedTitle"];
-
-
- // 修改msg字体颜色
- // NSMutableAttributedString *msgAtt = [[NSMutableAttributedString alloc] initWithString:message];
- // [msgAtt addAttribute:NSForegroundColorAttributeName value:RDSGrayColor range:NSMakeRange(0, message.length)];
- // [msgAtt addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, message.length)];
- // [ac setValue:msgAtt forKey:@"attributedMessage"];
-
-
-
- UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
- NSAssert(window, @"The window is empty");
- // 更新UI要在主线程执行
- dispatch_async(dispatch_get_main_queue(), ^{
- [window.rootViewController presentViewController:ac animated:YES completion:nil];
- });
- return ctrl;
- }
- + (instancetype)rds_timerAlertSureAction:(void (^)(void))sureActionBlock{
-
- TheAlertCtrl *ctrl = [[TheAlertCtrl alloc] init];
- SPAlertController *alertController = [SPAlertController alertControllerWithTitle:@"定时关闭" message:@"" preferredStyle:SPAlertControllerStyleAlert animationType:SPAlertAnimationTypeDefault];
-
-
- UIPickerView *timerPick = [[UIPickerView alloc] init];
- timerPick.delegate = ctrl;
- timerPick.dataSource = ctrl;
- NSMutableArray *data = [NSMutableArray array];
- for (CGFloat i = 0.5; i<24; i+=0.5) {
- [data addObject:@(i)];
- }
- ctrl.timerData = data;
-
- [timerPick selectRow:0 inComponent:0 animated:NO];
-
- // 插入一个view
- [alertController insertComponentView:timerPick];
-
- SPAlertAction *action1 = [SPAlertAction actionWithTitle:@"取消" style:SPAlertActionStyleDefault handler:nil];
- SPAlertAction *action2 = [SPAlertAction actionWithTitle:@"确定" style:SPAlertActionStyleDefault handler:^(SPAlertAction * _Nonnull action) {
-
- }];
-
- [alertController addAction:action1];
- [alertController addAction:action2];
-
- UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
- NSAssert(window, @"The window is empty");
- // 更新UI要在主线程执行
- dispatch_async(dispatch_get_main_queue(), ^{
- [timerPick reloadAllComponents];
- [window.rootViewController presentViewController:alertController animated:YES completion:nil];
- });
- return ctrl;
- }
- #pragma mark pickerView delegate
- //滚动选中的行
- -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
-
-
- }
- //每行显示的内容
- -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
-
- NSString *str = [NSString stringWithFormat:@"%@",_timerData[row]];
- return str;
- }
- //列宽
- //-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
- //
- // return 100;
- //}
- #pragma mark pickerView dataSource
- // 多少组
- -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
- return 1;
- }
- // 行
- -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
-
- return _timerData.count;
- }
- - (void)rds_show {
-
- RDS_WEAKSELF(weakSelf)
- UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
- NSAssert(window, @"The window is empty");
- // 更新UI要在主线程执行
- dispatch_async(dispatch_get_main_queue(), ^{
- [window.rootViewController presentViewController:weakSelf.ac animated:YES completion:nil];
- });
- }
- - (void)rds_dismiss {
-
- UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
- NSAssert(window, @"The window is empty");
- // 更新UI要在主线程执行
- dispatch_async(dispatch_get_main_queue(), ^{
- [window.rootViewController dismissViewControllerAnimated:YES completion:nil];
- });
- }
- @end
|