TCVideoRecordProcessView.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. //
  2. // VideoRecordProcessView.m
  3. // TXLiteAVDemo
  4. //
  5. // Created by zhangxiang on 2017/9/12.
  6. // Copyright © 2017年 Tencent. All rights reserved.
  7. //
  8. #import "TCVideoRecordProcessView.h"
  9. #import "UIView+Additions.h"
  10. #import "ColorMacro.h"
  11. #define VIEW_PAUSE_WIDTH 2
  12. @implementation TCVideoRecordProcessView
  13. {
  14. UIView * _processView;
  15. UIView * _deleteView;
  16. UIView * _minimumView;
  17. CGSize _viewSize;
  18. NSMutableArray * _pauseViewList;
  19. }
  20. -(instancetype)initWithFrame:(CGRect)frame
  21. {
  22. self = [super initWithFrame:frame];
  23. if (self) {
  24. [self setup];
  25. }
  26. return self;
  27. }
  28. - (instancetype)initWithCoder:(NSCoder *)aDecoder
  29. {
  30. if (self = [super initWithCoder:aDecoder]) {
  31. [self setup];
  32. }
  33. return self;
  34. }
  35. - (void)setMinimumTimeTipHidden:(BOOL)minimumTimeTipHidden {
  36. _minimumTimeTipHidden = minimumTimeTipHidden;
  37. _minimumView.hidden = minimumTimeTipHidden;
  38. }
  39. - (void)setup {
  40. _viewSize = self.frame.size;
  41. _processView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, _viewSize.height)];
  42. _processView.backgroundColor = kRedColor;
  43. // UIColorFromRGB(0xFF584C);
  44. [self addSubview:_processView];
  45. UIView * minimumView = [[UIView alloc] initWithFrame:CGRectMake(self.width * MIN_RECORD_TIME / MAX_RECORD_TIME, 0, 2, self.frame.size.height)];
  46. minimumView.backgroundColor = [UIColor whiteColor];
  47. [self addSubview:minimumView];
  48. _minimumView = minimumView;
  49. _pauseViewList = [NSMutableArray array];
  50. }
  51. -(void)update:(CGFloat)progress
  52. {
  53. _processView.frame = CGRectMake(0, 0, _viewSize.width * progress, _viewSize.height);
  54. }
  55. -(void)pause
  56. {
  57. UIView *pauseView = [[UIView alloc] initWithFrame:CGRectMake(_processView.right - VIEW_PAUSE_WIDTH, _processView.y, VIEW_PAUSE_WIDTH, _processView.height)];
  58. pauseView.backgroundColor = UIColorFromRGB(0xA8002D);
  59. [_pauseViewList addObject:pauseView];
  60. [self addSubview:pauseView];
  61. }
  62. -(void)pauseAtTime:(CGFloat)time
  63. {
  64. _processView.frame = CGRectMake(0, 0, _viewSize.width * time / MAX_RECORD_TIME, _viewSize.height);
  65. [self pause];
  66. }
  67. -(void)prepareDeletePart
  68. {
  69. if (_pauseViewList.count == 0) {
  70. return;
  71. }
  72. UIView *lastPauseView = [_pauseViewList lastObject];
  73. UIView *beforeLastPauseView = nil;
  74. if (_pauseViewList.count > 1) {
  75. beforeLastPauseView = [_pauseViewList objectAtIndex:_pauseViewList.count - VIEW_PAUSE_WIDTH];
  76. }
  77. _deleteView = [[UIView alloc] initWithFrame:CGRectMake(beforeLastPauseView.right, _processView.y, lastPauseView.left - beforeLastPauseView.right, _processView.height)];
  78. _deleteView.backgroundColor = UIColorFromRGB(0xA8002D);
  79. [self addSubview:_deleteView];
  80. }
  81. -(void)cancelDelete
  82. {
  83. if (_deleteView) {
  84. [_deleteView removeFromSuperview];
  85. }
  86. }
  87. -(void)comfirmDeletePart
  88. {
  89. UIView *lastPauseView = [_pauseViewList lastObject];
  90. if (lastPauseView) {
  91. [lastPauseView removeFromSuperview];
  92. }
  93. [_pauseViewList removeObject:lastPauseView];
  94. [_deleteView removeFromSuperview];
  95. }
  96. -(void)deleteAllPart
  97. {
  98. for(UIView *view in _pauseViewList)
  99. {
  100. [view removeFromSuperview];
  101. }
  102. [_pauseViewList removeAllObjects];
  103. [_deleteView removeFromSuperview];
  104. }
  105. @end