/************************************************************ * * Hyphenate CONFIDENTIAL * __________________ * Copyright (C) 2016 Hyphenate Inc. All rights reserved. * * NOTICE: All information contained herein is, and remains * the property of Hyphenate Inc. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Hyphenate Inc. */ #import "EaseRecordView.h" #import "EMCDDeviceManager.h" #import "EaseLocalDefine.h" @interface EaseRecordView () { NSTimer *_timer; UIImageView *_recordAnimationView; UILabel *_textLabel; } @end @implementation EaseRecordView + (void)initialize { // UIAppearance Proxy Defaults EaseRecordView *recordView = [self appearance]; recordView.voiceMessageAnimationImages = @[@"EaseUIResource.bundle/VoiceSearchFeedback001",@"EaseUIResource.bundle/VoiceSearchFeedback002",@"EaseUIResource.bundle/VoiceSearchFeedback003",@"EaseUIResource.bundle/VoiceSearchFeedback004",@"EaseUIResource.bundle/VoiceSearchFeedback005",@"EaseUIResource.bundle/VoiceSearchFeedback006",@"EaseUIResource.bundle/VoiceSearchFeedback007",@"EaseUIResource.bundle/VoiceSearchFeedback008",@"EaseUIResource.bundle/VoiceSearchFeedback009",@"EaseUIResource.bundle/VoiceSearchFeedback010",@"EaseUIResource.bundle/VoiceSearchFeedback011",@"EaseUIResource.bundle/VoiceSearchFeedback012",@"EaseUIResource.bundle/VoiceSearchFeedback013",@"EaseUIResource.bundle/VoiceSearchFeedback014",@"EaseUIResource.bundle/VoiceSearchFeedback015",@"EaseUIResource.bundle/VoiceSearchFeedback016",@"EaseUIResource.bundle/VoiceSearchFeedback017",@"EaseUIResource.bundle/VoiceSearchFeedback018",@"EaseUIResource.bundle/VoiceSearchFeedback019",@"EaseUIResource.bundle/VoiceSearchFeedback020"]; recordView.upCancelText = NSEaseLocalizedString(@"message.toolBar.record.upCancel", @"Fingers up slide, cancel sending"); recordView.loosenCancelText = NSEaseLocalizedString(@"message.toolBar.record.loosenCancel", @"loosen the fingers, to cancel sending"); } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code UIView *bgView = [[UIView alloc] initWithFrame:self.bounds]; bgView.backgroundColor = [UIColor grayColor]; bgView.layer.cornerRadius = 5; bgView.layer.masksToBounds = YES; bgView.alpha = 0.6; [self addSubview:bgView]; _recordAnimationView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 0, self.bounds.size.width - 20, self.bounds.size.height - 30)]; _recordAnimationView.image = [UIImage easeImageNamed:@"EaseUIResource.bundle/VoiceSearchFeedback001"]; _recordAnimationView.contentMode = UIViewContentModeScaleAspectFit; [self addSubview:_recordAnimationView]; _textLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, self.bounds.size.height - 30, self.bounds.size.width - 10, 25)]; _textLabel.textAlignment = NSTextAlignmentCenter; _textLabel.backgroundColor = [UIColor clearColor]; _textLabel.text = NSEaseLocalizedString(@"message.toolBar.record.upCancel", @"Fingers up slide, cancel sending"); [self addSubview:_textLabel]; _textLabel.font = [UIFont systemFontOfSize:13]; _textLabel.textColor = [UIColor whiteColor]; _textLabel.layer.cornerRadius = 5; _textLabel.layer.borderColor = [[UIColor redColor] colorWithAlphaComponent:0.5].CGColor; _textLabel.layer.masksToBounds = YES; } return self; } #pragma mark - setter - (void)setVoiceMessageAnimationImages:(NSArray *)voiceMessageAnimationImages { _voiceMessageAnimationImages = voiceMessageAnimationImages; } - (void)setUpCancelText:(NSString *)upCancelText { _upCancelText = upCancelText; _textLabel.text = _upCancelText; } - (void)setLoosenCancelText:(NSString *)loosenCancelText { _loosenCancelText = loosenCancelText; } -(void)recordButtonTouchDown { _textLabel.text = _upCancelText; _textLabel.backgroundColor = [UIColor clearColor]; _timer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(setVoiceImage) userInfo:nil repeats:YES]; } -(void)recordButtonTouchUpInside { [_timer invalidate]; } -(void)recordButtonTouchUpOutside { [_timer invalidate]; } -(void)recordButtonDragInside { _textLabel.text = _upCancelText; _textLabel.backgroundColor = [UIColor clearColor]; } -(void)recordButtonDragOutside { _textLabel.text = _loosenCancelText; _textLabel.backgroundColor = [UIColor redColor]; } -(void)setVoiceImage { _recordAnimationView.image = [UIImage easeImageNamed:[_voiceMessageAnimationImages objectAtIndex:0]]; double voiceSound = 0; voiceSound = [[EMCDDeviceManager sharedInstance] emPeekRecorderVoiceMeter]; int index = voiceSound*[_voiceMessageAnimationImages count]; if (index >= [_voiceMessageAnimationImages count]) { _recordAnimationView.image = [UIImage easeImageNamed:[_voiceMessageAnimationImages lastObject]]; } else { _recordAnimationView.image = [UIImage easeImageNamed:[_voiceMessageAnimationImages objectAtIndex:index]]; } /* if (0 < voiceSound <= 0.05) { [_recordAnimationView setImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/EaseUIResource.bundle/VoiceSearchFeedback001"]]; }else if (0.05