| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- // Copyright (c) 2019 Tencent. All rights reserved.
- #import "UGCKitVideoRecordProcessView.h"
- #import "UGCKitColorMacro.h"
- #define VIEW_PAUSE_WIDTH 2
- @implementation UGCKitVideoRecordProcessView
- {
- UGCKitTheme *_theme;
- UIView * _processView;
- UIView * _deleteView;
- UIView * _minimumView;
- CGSize _viewSize;
- NSMutableArray * _pauseViewList;
- NSTimeInterval _minDuration;
- NSTimeInterval _maxDuration;
- }
- -(instancetype)initWithTheme:(UGCKitTheme *)theme
- frame:(CGRect)frame
- minDuration:(NSTimeInterval)minDuration
- maxDuration:(NSTimeInterval)maxDuration
- {
- self = [super initWithFrame:frame];
- if (self) {
- _theme = theme;
- _minDuration = minDuration;
- _maxDuration = maxDuration;
- [self setup];
- }
- return self;
- }
- - (instancetype)initWithCoder:(NSCoder *)aDecoder
- {
- if (self = [super initWithCoder:aDecoder]) {
- [self setup];
- }
- return self;
- }
- - (void)setMinDuration:(NSTimeInterval)minDuration
- maxDuration:(NSTimeInterval)maxDuration
- {
- _minDuration = minDuration;
- _maxDuration = maxDuration;
- _minimumView.frame = CGRectMake(CGRectGetWidth(self.frame) * _minDuration / _maxDuration, 0, 2, self.frame.size.height);
- }
- - (void)setMinimumTimeTipHidden:(BOOL)minimumTimeTipHidden {
- _minimumTimeTipHidden = minimumTimeTipHidden;
- _minimumView.hidden = minimumTimeTipHidden;
- }
- - (void)setup {
- _viewSize = self.frame.size;
- _processView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, _viewSize.height)];
- _processView.backgroundColor = _theme.recordTimelineColor;// UIColorFromRGB(0xFF584C);
- [self addSubview:_processView];
-
- UIView * minimumView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.frame) * _minDuration / _maxDuration, 0, 2, self.frame.size.height)];
- minimumView.backgroundColor = [UIColor whiteColor];
- [self addSubview:minimumView];
- _minimumView = minimumView;
- _pauseViewList = [NSMutableArray array];
- }
- -(void)update:(CGFloat)progress
- {
- _processView.frame = CGRectMake(0, 0, _viewSize.width * progress, _viewSize.height);
- }
- -(void)pause
- {
- UIView *pauseView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_processView.frame) - VIEW_PAUSE_WIDTH, CGRectGetMinY(_processView.frame),
- VIEW_PAUSE_WIDTH, CGRectGetHeight(_processView.frame))];
- pauseView.backgroundColor = _theme.recordTimelineSeperatorColor;// UIColorFromRGB(0xA8002D);
- [_pauseViewList addObject:pauseView];
- [self addSubview:pauseView];
- }
- -(void)pauseAtTime:(CGFloat)time
- {
- _processView.frame = CGRectMake(0, 0, _viewSize.width * time / _maxDuration, _viewSize.height);
- [self pause];
- }
- -(void)prepareDeletePart
- {
- if (_pauseViewList.count == 0) {
- return;
- }
- UIView *lastPauseView = [_pauseViewList lastObject];
- UIView *beforeLastPauseView = nil;
- if (_pauseViewList.count > 1) {
- beforeLastPauseView = [_pauseViewList objectAtIndex:_pauseViewList.count - VIEW_PAUSE_WIDTH];
- }
- _deleteView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMaxX(beforeLastPauseView.frame), CGRectGetMinY(_processView.frame),
- CGRectGetMinX(lastPauseView.frame) - CGRectGetMaxX(beforeLastPauseView.frame),
- CGRectGetHeight(_processView.frame))];
- _deleteView.backgroundColor = _theme.recordTimelineSelectionColor;// UIColorFromRGB(0xA8002D);
- [self addSubview:_deleteView];
- }
- -(void)cancelDelete
- {
- if (_deleteView) {
- [_deleteView removeFromSuperview];
- }
- }
- -(void)comfirmDeletePart
- {
- UIView *lastPauseView = [_pauseViewList lastObject];
- if (lastPauseView) {
- [lastPauseView removeFromSuperview];
- }
- [_pauseViewList removeObject:lastPauseView];
- [_deleteView removeFromSuperview];
- }
- -(void)deleteAllPart
- {
- for(UIView *view in _pauseViewList)
- {
- [view removeFromSuperview];
- }
- [_pauseViewList removeAllObjects];
- [_deleteView removeFromSuperview];
- }
- @end
|