TUISecondConfirm.m 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //
  2. // TUISecondConfirm.m
  3. // TIMCommon
  4. //
  5. // Created by xiangzhang on 2023/5/15.
  6. // Copyright © 2023 Tencent. All rights reserved.
  7. //
  8. #import "TUISecondConfirm.h"
  9. #import <TUICore/TUIDefine.h>
  10. #import <TUICore/UIView+TUILayout.h>
  11. @implementation TUISecondConfirmBtnInfo
  12. @end
  13. static UIWindow *gSecondWindow = nil;
  14. static TUISecondConfirmBtnInfo *gCancelBtnInfo = nil;
  15. static TUISecondConfirmBtnInfo *gConfirmBtnInfo = nil;
  16. @implementation TUISecondConfirm
  17. + (void)show:(NSString *)title cancelBtnInfo:(TUISecondConfirmBtnInfo *)cancelBtnInfo confirmBtnInfo:(TUISecondConfirmBtnInfo *)confirmBtnInfo {
  18. gCancelBtnInfo = cancelBtnInfo;
  19. gConfirmBtnInfo = confirmBtnInfo;
  20. gSecondWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  21. gSecondWindow.windowLevel = UIWindowLevelAlert - 1;
  22. gSecondWindow.backgroundColor = [UIColor clearColor];
  23. gSecondWindow.hidden = NO;
  24. if (@available(iOS 13.0, *)) {
  25. for (UIWindowScene *windowScene in [UIApplication sharedApplication].connectedScenes) {
  26. if (windowScene.activationState == UISceneActivationStateForegroundActive) {
  27. gSecondWindow.windowScene = windowScene;
  28. break;
  29. }
  30. }
  31. }
  32. UIView *backgroupView = [[UIView alloc] initWithFrame:gSecondWindow.bounds];
  33. backgroupView.backgroundColor = RGBA(0, 0, 0, 0.4);
  34. [gSecondWindow addSubview:backgroupView];
  35. UIView *confimView = [[UIView alloc] init];
  36. confimView.backgroundColor = TIMCommonDynamicColor(@"second_confirm_bg_color", @"#FFFFFF");
  37. confimView.layer.cornerRadius = 13;
  38. confimView.layer.masksToBounds = YES;
  39. [gSecondWindow addSubview:confimView];
  40. confimView.mm_width(gSecondWindow.mm_w - kScale375(32) * 2).mm_height(183).mm__centerX(gSecondWindow.mm_centerX).mm__centerY(gSecondWindow.mm_h / 2);
  41. UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, confimView.mm_w, 123)];
  42. titleLabel.text = title;
  43. titleLabel.textColor = TIMCommonDynamicColor(@"second_confirm_title_color", @"#000000");
  44. titleLabel.textAlignment = NSTextAlignmentCenter;
  45. titleLabel.font = [UIFont systemFontOfSize:16];
  46. titleLabel.numberOfLines = 0;
  47. [confimView addSubview:titleLabel];
  48. UIView *line1 = [[UIView alloc] initWithFrame:CGRectMake(0, titleLabel.mm_maxY, titleLabel.mm_w, 0.5)];
  49. line1.backgroundColor = TIMCommonDynamicColor(@"second_confirm_line_color", @"#DDDDDD");
  50. [confimView addSubview:line1];
  51. UIButton *cancelBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  52. [cancelBtn setFrame:CGRectMake(0, line1.mm_maxY, line1.mm_w / 2, confimView.mm_h - line1.mm_maxY)];
  53. [cancelBtn setTitle:gCancelBtnInfo.tile forState:UIControlStateNormal];
  54. [cancelBtn.titleLabel setFont:[UIFont systemFontOfSize:16]];
  55. [cancelBtn setTitleColor:TIMCommonDynamicColor(@"second_confirm_cancel_btn_title_color", @"#000000") forState:UIControlStateNormal];
  56. [cancelBtn addTarget:self action:@selector(onCancelBtnClick) forControlEvents:UIControlEventTouchUpInside];
  57. [confimView addSubview:cancelBtn];
  58. UIView *line2 = [[UIView alloc] initWithFrame:CGRectMake(cancelBtn.mm_maxX, cancelBtn.mm_y, 0.5, cancelBtn.mm_h)];
  59. line2.backgroundColor = TIMCommonDynamicColor(@"second_confirm_line_color", @"#DDDDDD");
  60. [confimView addSubview:line2];
  61. UIButton *confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  62. [confirmBtn setFrame:CGRectMake(line2.mm_maxX, cancelBtn.mm_y, cancelBtn.mm_w, cancelBtn.mm_h)];
  63. [confirmBtn setTitle:gConfirmBtnInfo.tile forState:UIControlStateNormal];
  64. [confirmBtn.titleLabel setFont:[UIFont systemFontOfSize:16]];
  65. [confirmBtn setTitleColor:TIMCommonDynamicColor(@"second_confirm_confirm_btn_title_color", @"#FF584C") forState:UIControlStateNormal];
  66. [confirmBtn addTarget:self action:@selector(onConfirmBtnBtnClick) forControlEvents:UIControlEventTouchUpInside];
  67. [confimView addSubview:confirmBtn];
  68. }
  69. + (void)onCancelBtnClick {
  70. if (gCancelBtnInfo && gCancelBtnInfo.click) {
  71. gCancelBtnInfo.click();
  72. }
  73. [self dismiss];
  74. }
  75. + (void)onConfirmBtnBtnClick {
  76. if (gConfirmBtnInfo && gConfirmBtnInfo.click) {
  77. gConfirmBtnInfo.click();
  78. }
  79. [self dismiss];
  80. }
  81. + (void)dismiss {
  82. gSecondWindow = nil;
  83. gCancelBtnInfo = nil;
  84. gConfirmBtnInfo = nil;
  85. }
  86. @end