From 3e8437ae559487362fae3525beb79c534c213a51 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 12 Jul 2018 13:44:34 +0800 Subject: [PATCH] bug修复和功能优化 --- screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/FaceView/EaseFaceView.m | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 208 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/FaceView/EaseFaceView.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/FaceView/EaseFaceView.m new file mode 100755 index 0000000..7d567fe --- /dev/null +++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/FaceView/EaseFaceView.m @@ -0,0 +1,208 @@ +/************************************************************ + * * 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 "EaseFaceView.h" + +#import "EaseEmotionManager.h" +#import "EaseLocalDefine.h" + +#define kButtomNum 5 + +@interface EaseFaceView () +{ + UIScrollView *_bottomScrollView; + NSInteger _currentSelectIndex; + NSArray *_emotionManagers; +} + +@property (nonatomic, strong) EaseFacialView *facialView; + +@end + +@implementation EaseFaceView + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self addSubview:self.facialView]; + [self _setupButtom]; + } + return self; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview +{ + if (newSuperview) { + [self reloadEmotionData]; + } +} + +#pragma mark - private + +- (EaseFacialView*)facialView +{ + if (_facialView == nil) { + _facialView = [[EaseFacialView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 150)]; + _facialView.delegate = self; + } + return _facialView; +} + +- (void)_setupButtom +{ + _currentSelectIndex = 1000; + + _bottomScrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(0, CGRectGetMaxY(_facialView.frame), 4 * CGRectGetWidth(_facialView.frame)/5, self.frame.size.height - CGRectGetHeight(_facialView.frame))]; + _bottomScrollView.showsHorizontalScrollIndicator = NO; + [self addSubview:_bottomScrollView]; + [self _setupButtonScrollView]; + + UIButton *sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + sendButton.frame = CGRectMake((kButtomNum-1)*CGRectGetWidth(_facialView.frame)/kButtomNum, CGRectGetMaxY(_facialView.frame), CGRectGetWidth(_facialView.frame)/kButtomNum, CGRectGetHeight(_bottomScrollView.frame)); + [sendButton setBackgroundColor:[UIColor colorWithRed:30 / 255.0 green:167 / 255.0 blue:252 / 255.0 alpha:1.0]]; + [sendButton setTitle:NSEaseLocalizedString(@"send", @"Send") forState:UIControlStateNormal]; + [sendButton addTarget:self action:@selector(sendFace) forControlEvents:UIControlEventTouchUpInside]; + [self addSubview:sendButton]; +} + +- (void)_setupButtonScrollView +{ + NSInteger number = [_emotionManagers count]; + if (number <= 1) { + return; + } + + for (UIView *view in [_bottomScrollView subviews]) { + [view removeFromSuperview]; + } + + for (int i = 0; i < number; i++) { + UIButton *defaultButton = [UIButton buttonWithType:UIButtonTypeCustom]; + defaultButton.frame = CGRectMake(i * CGRectGetWidth(_bottomScrollView.frame)/(kButtomNum-1), 0, CGRectGetWidth(_bottomScrollView.frame)/(kButtomNum-1), CGRectGetHeight(_bottomScrollView.frame)); + EaseEmotionManager *emotionManager = [_emotionManagers objectAtIndex:i]; + if (emotionManager.emotionType == EMEmotionDefault) { + EaseEmotion *emotion = [emotionManager.emotions objectAtIndex:0]; + [defaultButton setTitle:emotion.emotionThumbnail forState:UIControlStateNormal]; + } else { + [defaultButton setImage:emotionManager.tagImage forState:UIControlStateNormal]; + [defaultButton setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)]; + defaultButton.imageView.contentMode = UIViewContentModeScaleAspectFit; + } + [defaultButton setBackgroundColor:[UIColor clearColor]]; + defaultButton.layer.borderWidth = 0.5; + defaultButton.layer.borderColor = [UIColor whiteColor].CGColor; + [defaultButton addTarget:self action:@selector(didSelect:) forControlEvents:UIControlEventTouchUpInside]; + defaultButton.tag = 1000 + i; + [_bottomScrollView addSubview:defaultButton]; + } + [_bottomScrollView setContentSize:CGSizeMake(number*CGRectGetWidth(_bottomScrollView.frame)/(kButtomNum-1), CGRectGetHeight(_bottomScrollView.frame))]; + + [self reloadEmotionData]; +} + +- (void)_clearupButtomScrollView +{ + for (UIView *view in [_bottomScrollView subviews]) { + [view removeFromSuperview]; + } +} + +#pragma mark - action + +- (void)didSelect:(id)sender +{ + UIButton *btn = (UIButton*)sender; + UIButton *lastBtn = (UIButton*)[_bottomScrollView viewWithTag:_currentSelectIndex]; + lastBtn.selected = NO; + + _currentSelectIndex = btn.tag; + btn.selected = YES; + NSInteger index = btn.tag - 1000; + [_facialView loadFacialViewWithPage:index]; +} + +- (void)reloadEmotionData +{ + NSInteger index = _currentSelectIndex - 1000; + if (index < [_emotionManagers count]) { + [_facialView loadFacialView:_emotionManagers size:CGSizeMake(30, 30)]; + } +} + +#pragma mark - FacialViewDelegate + +-(void)selectedFacialView:(NSString*)str{ + if (_delegate) { + [_delegate selectedFacialView:str isDelete:NO]; + } +} + +-(void)deleteSelected:(NSString *)str{ + if (_delegate) { + [_delegate selectedFacialView:str isDelete:YES]; + } +} + +- (void)sendFace +{ + if (_delegate) { + [_delegate sendFace]; + } +} + +- (void)sendFace:(EaseEmotion *)emotion +{ + if (_delegate) { + [_delegate sendFaceWithEmotion:emotion]; + } +} + +#pragma mark - public + +- (BOOL)stringIsFace:(NSString *)string +{ + if ([_facialView.faces containsObject:string]) { + return YES; + } + + return NO; +} + +- (void)setEmotionManagers:(NSArray *)emotionManagers +{ + _emotionManagers = emotionManagers; + for (EaseEmotionManager *emotionManager in _emotionManagers) { + if (emotionManager.emotionType != EMEmotionGif) { + NSMutableArray *array = [NSMutableArray arrayWithArray:emotionManager.emotions]; + NSInteger maxRow = emotionManager.emotionRow; + NSInteger maxCol = emotionManager.emotionCol; + NSInteger count = 1; + while (1) { + NSInteger index = maxRow * maxCol * count - 1; + if (index >= [array count]) { + [array addObject:@""]; + break; + } else { + [array insertObject:@"" atIndex:index]; + } + count++; + } + emotionManager.emotions = array; + } + } + [self _setupButtonScrollView]; +} + + +@end \ No newline at end of file -- Gitblit v1.8.0