YBProgressObj.m 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // YBProgressObj.m
  3. // YBVideo
  4. //
  5. // Created by YB007 on 2019/11/26.
  6. // Copyright © 2019 cat. All rights reserved.
  7. //
  8. #import "YBProgressObj.h"
  9. @interface YBProgressObj()
  10. @property(nonatomic,strong)UIView *generationView;
  11. @property(nonatomic,strong)UILabel *generationTitleLabel;
  12. @property(nonatomic,strong)UIProgressView *generateProgressView;
  13. @property(nonatomic,strong)UIButton *generateCannelBtn;
  14. @property(nonatomic,copy)YBProgressBlock progressEvent;
  15. @property(nonatomic,assign)BOOL isExist;
  16. @end
  17. @implementation YBProgressObj
  18. static YBProgressObj *progressManeger = nil;
  19. +(instancetype)progressManeger {
  20. static dispatch_once_t onceToken;
  21. dispatch_once(&onceToken, ^{
  22. progressManeger = [[super allocWithZone:NULL]init];
  23. });
  24. return progressManeger;
  25. }
  26. +(instancetype)allocWithZone:(struct _NSZone *)zone {
  27. return [self progressManeger];
  28. }
  29. -(void)setUpViewCancelHidden:(BOOL)cancelHidden andComplete:(YBProgressBlock)complete {
  30. self.progressEvent = complete;
  31. if (!_generationView) {
  32. self.isExist = YES;
  33. _generationView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, _window_width, _window_height)];
  34. _generationView.backgroundColor = UIColor.blackColor;
  35. _generationView.alpha = 0.9f;
  36. _generateProgressView = [UIProgressView new];
  37. _generateProgressView.center = CGPointMake(_generationView.width / 2, _generationView.height / 2);
  38. _generateProgressView.bounds = CGRectMake(0, 0, 225, 20);
  39. _generateProgressView.progressTintColor = Pink_Cor;//UIColorFromRGB(0x0accac);
  40. [_generateProgressView setTrackImage:[UIImage imageNamed:@"slide_bar_small"]];
  41. //_generateProgressView.trackTintColor = UIColor.whiteColor;
  42. //_generateProgressView.transform = CGAffineTransformMakeScale(1.0, 2.0);
  43. _generationTitleLabel = [UILabel new];
  44. _generationTitleLabel.font = [UIFont systemFontOfSize:14];
  45. _generationTitleLabel.text = YZMsg(@"请稍后.");
  46. _generationTitleLabel.textColor = UIColor.whiteColor;
  47. _generationTitleLabel.textAlignment = NSTextAlignmentCenter;
  48. _generationTitleLabel.frame = CGRectMake(0, _generateProgressView.y - 34, _generationView.width, 14);
  49. _generateCannelBtn = [UIButton new];
  50. [_generateCannelBtn setImage:[UIImage imageNamed:@"cancell"] forState:UIControlStateNormal];
  51. _generateCannelBtn.frame = CGRectMake(_generateProgressView.right + 15, _generationTitleLabel.bottom + 10, 20, 20);
  52. [_generateCannelBtn addTarget:self action:@selector(onGenerateCancelBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
  53. _generateCannelBtn.hidden = cancelHidden;
  54. [_generationView addSubview:_generationTitleLabel];
  55. [_generationView addSubview:_generateProgressView];
  56. [_generationView addSubview:_generateCannelBtn];
  57. [[UIApplication sharedApplication].delegate.window addSubview:_generationView];
  58. }
  59. _generateProgressView.progress = 0.f;
  60. [[UIApplication sharedApplication].delegate.window bringSubviewToFront:_generationView];
  61. }
  62. - (void)setGenerationProgress:(CGFloat)generationProgress {
  63. _generateProgressView.progress = generationProgress;
  64. _generationTitleLabel.text = [NSString stringWithFormat:@"%@(%.f%%)",YZMsg(@"请稍后."),generationProgress*100];
  65. }
  66. - (void)onGenerateCancelBtnClicked:(UIButton*)sender {
  67. if (self.progressEvent) {
  68. self.progressEvent();
  69. }
  70. }
  71. - (void)setGenerationHidden:(BOOL)generationHidden {
  72. _generationHidden = generationHidden;
  73. _generationView.hidden = _generationHidden;
  74. if (_generationHidden == NO) {
  75. [[UIApplication sharedApplication].delegate.window bringSubviewToFront:_generationView];
  76. }
  77. }
  78. -(void)progressDestroy {
  79. if (_generationView) {
  80. self.isExist = NO;
  81. [_generationView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
  82. [_generationView removeFromSuperview];
  83. _generationView = nil;
  84. }
  85. }
  86. @end