UGCKitVideoRecordProcessView.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // Copyright (c) 2019 Tencent. All rights reserved.
  2. #import "UGCKitVideoRecordProcessView.h"
  3. #import "UGCKitColorMacro.h"
  4. #define VIEW_PAUSE_WIDTH 2
  5. @implementation UGCKitVideoRecordProcessView
  6. {
  7. UGCKitTheme *_theme;
  8. UIView * _processView;
  9. UIView * _deleteView;
  10. UIView * _minimumView;
  11. CGSize _viewSize;
  12. NSMutableArray * _pauseViewList;
  13. NSTimeInterval _minDuration;
  14. NSTimeInterval _maxDuration;
  15. }
  16. -(instancetype)initWithTheme:(UGCKitTheme *)theme
  17. frame:(CGRect)frame
  18. minDuration:(NSTimeInterval)minDuration
  19. maxDuration:(NSTimeInterval)maxDuration
  20. {
  21. self = [super initWithFrame:frame];
  22. if (self) {
  23. _theme = theme;
  24. _minDuration = minDuration;
  25. _maxDuration = maxDuration;
  26. [self setup];
  27. }
  28. return self;
  29. }
  30. - (instancetype)initWithCoder:(NSCoder *)aDecoder
  31. {
  32. if (self = [super initWithCoder:aDecoder]) {
  33. [self setup];
  34. }
  35. return self;
  36. }
  37. - (void)setMinDuration:(NSTimeInterval)minDuration
  38. maxDuration:(NSTimeInterval)maxDuration
  39. {
  40. _minDuration = minDuration;
  41. _maxDuration = maxDuration;
  42. _minimumView.frame = CGRectMake(CGRectGetWidth(self.frame) * _minDuration / _maxDuration, 0, 2, self.frame.size.height);
  43. }
  44. - (void)setMinimumTimeTipHidden:(BOOL)minimumTimeTipHidden {
  45. _minimumTimeTipHidden = minimumTimeTipHidden;
  46. _minimumView.hidden = minimumTimeTipHidden;
  47. }
  48. - (void)setup {
  49. _viewSize = self.frame.size;
  50. _processView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, _viewSize.height)];
  51. _processView.backgroundColor = _theme.recordTimelineColor;// UIColorFromRGB(0xFF584C);
  52. [self addSubview:_processView];
  53. UIView * minimumView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.frame) * _minDuration / _maxDuration, 0, 2, self.frame.size.height)];
  54. minimumView.backgroundColor = [UIColor whiteColor];
  55. [self addSubview:minimumView];
  56. _minimumView = minimumView;
  57. _pauseViewList = [NSMutableArray array];
  58. }
  59. -(void)update:(CGFloat)progress
  60. {
  61. _processView.frame = CGRectMake(0, 0, _viewSize.width * progress, _viewSize.height);
  62. }
  63. -(void)pause
  64. {
  65. UIView *pauseView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_processView.frame) - VIEW_PAUSE_WIDTH, CGRectGetMinY(_processView.frame),
  66. VIEW_PAUSE_WIDTH, CGRectGetHeight(_processView.frame))];
  67. pauseView.backgroundColor = _theme.recordTimelineSeperatorColor;// UIColorFromRGB(0xA8002D);
  68. [_pauseViewList addObject:pauseView];
  69. [self addSubview:pauseView];
  70. }
  71. -(void)pauseAtTime:(CGFloat)time
  72. {
  73. _processView.frame = CGRectMake(0, 0, _viewSize.width * time / _maxDuration, _viewSize.height);
  74. [self pause];
  75. }
  76. -(void)prepareDeletePart
  77. {
  78. if (_pauseViewList.count == 0) {
  79. return;
  80. }
  81. UIView *lastPauseView = [_pauseViewList lastObject];
  82. UIView *beforeLastPauseView = nil;
  83. if (_pauseViewList.count > 1) {
  84. beforeLastPauseView = [_pauseViewList objectAtIndex:_pauseViewList.count - VIEW_PAUSE_WIDTH];
  85. }
  86. _deleteView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMaxX(beforeLastPauseView.frame), CGRectGetMinY(_processView.frame),
  87. CGRectGetMinX(lastPauseView.frame) - CGRectGetMaxX(beforeLastPauseView.frame),
  88. CGRectGetHeight(_processView.frame))];
  89. _deleteView.backgroundColor = _theme.recordTimelineSelectionColor;// UIColorFromRGB(0xA8002D);
  90. [self addSubview:_deleteView];
  91. }
  92. -(void)cancelDelete
  93. {
  94. if (_deleteView) {
  95. [_deleteView removeFromSuperview];
  96. }
  97. }
  98. -(void)comfirmDeletePart
  99. {
  100. UIView *lastPauseView = [_pauseViewList lastObject];
  101. if (lastPauseView) {
  102. [lastPauseView removeFromSuperview];
  103. }
  104. [_pauseViewList removeObject:lastPauseView];
  105. [_deleteView removeFromSuperview];
  106. }
  107. -(void)deleteAllPart
  108. {
  109. for(UIView *view in _pauseViewList)
  110. {
  111. [view removeFromSuperview];
  112. }
  113. [_pauseViewList removeAllObjects];
  114. [_deleteView removeFromSuperview];
  115. }
  116. @end