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/MoreView/EaseChatBarMoreView.m |  352 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 352 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/MoreView/EaseChatBarMoreView.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/MoreView/EaseChatBarMoreView.m
new file mode 100755
index 0000000..0ced8ab
--- /dev/null
+++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/MoreView/EaseChatBarMoreView.m
@@ -0,0 +1,352 @@
+/************************************************************
+ *  * 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 "EaseChatBarMoreView.h"
+
+#define CHAT_BUTTON_SIZE CGSizeMake(50,60)
+#define INSETS 10
+#define MOREVIEW_COL 4
+#define MOREVIEW_ROW 2
+#define MOREVIEW_BUTTON_TAG 1000
+
+@implementation UIView (MoreView)
+
+- (void)removeAllSubview
+{
+    for (UIView *view in self.subviews) {
+        [view removeFromSuperview];
+    }
+}
+
+@end
+
+@interface EaseChatBarMoreView ()<UIScrollViewDelegate>
+{
+    EMChatToolbarType _type;
+    NSInteger _maxIndex;
+}
+
+@property (nonatomic, strong) UIScrollView *scrollview;
+@property (nonatomic, strong) UIPageControl *pageControl;
+
+@property (nonatomic, strong) UIButton *photoButton;
+@property (nonatomic, strong) UIButton *takePicButton;
+@property (nonatomic, strong) UIButton *locationButton;
+@property (nonatomic, strong) UIButton *videoButton;
+@property (nonatomic, strong) UIButton *audioCallButton;
+@property (nonatomic, strong) UIButton *videoCallButton;
+
+@end
+
+@implementation EaseChatBarMoreView
+
++ (void)initialize
+{
+    // UIAppearance Proxy Defaults
+    EaseChatBarMoreView *moreView = [self appearance];
+    moreView.moreViewBackgroundColor = [UIColor whiteColor];
+}
+
+- (instancetype)initWithFrame:(CGRect)frame type:(EMChatToolbarType)type
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        // Initialization code
+        _type = type;
+        [self setupSubviewsForType:_type];
+    }
+    return self;
+}
+
+- (void)setupSubviewsForType:(EMChatToolbarType)type
+{
+    //self.backgroundColor = [UIColor clearColor];
+    self.accessibilityIdentifier = @"more_view";
+    
+    _scrollview = [[UIScrollView alloc] init];
+    _scrollview.pagingEnabled = YES;
+    _scrollview.showsHorizontalScrollIndicator = NO;
+    _scrollview.showsVerticalScrollIndicator = NO;
+    _scrollview.delegate = self;
+    [self addSubview:_scrollview];
+    
+    _pageControl = [[UIPageControl alloc] init];
+    _pageControl.currentPage = 0;
+    _pageControl.numberOfPages = 1;
+    [self addSubview:_pageControl];
+    
+    CGFloat insets = (self.frame.size.width - 4 * CHAT_BUTTON_SIZE.width) / 5;
+    
+    _photoButton = [self btnWithImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_photo"]
+                     highlightedImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_photoSelected"]
+                                title:@"������"];
+
+    _photoButton.accessibilityIdentifier = @"image";
+    [_photoButton setFrame:CGRectMake(insets, 10, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+    [_photoButton addTarget:self action:@selector(photoAction) forControlEvents:UIControlEventTouchUpInside];
+    _photoButton.tag = MOREVIEW_BUTTON_TAG;
+    [_scrollview addSubview:_photoButton];
+    
+    _locationButton = [self btnWithImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_location"]
+                        highlightedImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_locationSelected"]
+                                   title:@"������"];
+    _locationButton.accessibilityIdentifier = @"location";
+    [_locationButton setFrame:CGRectMake(insets * 2 + CHAT_BUTTON_SIZE.width, 10, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+    [_locationButton addTarget:self action:@selector(locationAction) forControlEvents:UIControlEventTouchUpInside];
+    _locationButton.tag = MOREVIEW_BUTTON_TAG + 1;
+    [_scrollview addSubview:_locationButton];
+    
+    _takePicButton = [self btnWithImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_camera"]
+                       highlightedImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_cameraSelected"]
+                                  title:@"������"];
+    [_takePicButton setFrame:CGRectMake(insets * 3 + CHAT_BUTTON_SIZE.width * 2, 10, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+    [_takePicButton addTarget:self action:@selector(takePicAction) forControlEvents:UIControlEventTouchUpInside];
+    _takePicButton.tag = MOREVIEW_BUTTON_TAG + 2;
+    _maxIndex = 2;
+    [_scrollview addSubview:_takePicButton];
+
+    CGRect frame = self.frame;
+    if (type == EMChatToolbarTypeChat) {
+        frame.size.height = 150;
+        _audioCallButton = [self btnWithImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_audioCall"]
+                             highlightedImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_audioCallSelected"]
+                                        title:@"������"];
+        [_audioCallButton setFrame:CGRectMake(insets * 4 + CHAT_BUTTON_SIZE.width * 3, 10, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+        [_audioCallButton addTarget:self action:@selector(takeAudioCallAction) forControlEvents:UIControlEventTouchUpInside];
+        _audioCallButton.tag = MOREVIEW_BUTTON_TAG + 3;
+        [_scrollview addSubview:_audioCallButton];
+        
+        _videoCallButton = [self btnWithImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_videoCall"]
+                             highlightedImage:[UIImage easeImageNamed:@"EaseUIResource.bundle/chatBar_colorMore_videoCallSelected"]
+                                        title:@"������"];
+        [_videoCallButton setFrame:CGRectMake(insets, 10 * 2 + CHAT_BUTTON_SIZE.height + 10, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+        [_videoCallButton addTarget:self action:@selector(takeVideoCallAction) forControlEvents:UIControlEventTouchUpInside];
+        _videoCallButton.tag =MOREVIEW_BUTTON_TAG + 4;
+        _maxIndex = 4;
+        [_scrollview addSubview:_videoCallButton];
+    }
+    else if (type == EMChatToolbarTypeGroup)
+    {
+        frame.size.height = 80;
+    }
+    self.frame = frame;
+    _scrollview.frame = CGRectMake(0, 0, CGRectGetWidth(frame), CGRectGetHeight(frame));
+    _pageControl.frame = CGRectMake(0, CGRectGetHeight(frame) - 20, CGRectGetWidth(frame), 20);
+    _pageControl.hidden = _pageControl.numberOfPages<=1;
+}
+
+
+- (UIButton *)btnWithImage:(UIImage *)aImage highlightedImage:(UIImage *)aHighLightedImage title:(NSString *)aTitle {
+    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
+    [btn setImage:aImage forState:UIControlStateNormal];
+    [btn setImage:aHighLightedImage forState:UIControlStateHighlighted];
+    [btn setTitle:aTitle forState:UIControlStateNormal];
+    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
+    btn.titleLabel.font = [UIFont systemFontOfSize: 12.0];
+    btn.imageEdgeInsets = UIEdgeInsetsMake(-10, 0, 20, 0);
+    btn.titleEdgeInsets = UIEdgeInsetsMake(14, -60, -20, 0);
+    return btn;
+}
+
+- (void)insertItemWithImage:(UIImage *)image highlightedImage:(UIImage *)highLightedImage title:(NSString *)title
+{
+    CGFloat insets = (self.frame.size.width - MOREVIEW_COL * CHAT_BUTTON_SIZE.width) / 5;
+    CGRect frame = self.frame;
+    _maxIndex++;
+    NSInteger pageSize = MOREVIEW_COL*MOREVIEW_ROW;
+    NSInteger page = _maxIndex/pageSize;
+    NSInteger row = (_maxIndex%pageSize)/MOREVIEW_COL;
+    NSInteger col = _maxIndex%MOREVIEW_COL;
+    UIButton *moreButton = [self btnWithImage:image highlightedImage:highLightedImage title:title];
+    [moreButton setFrame:CGRectMake(page * CGRectGetWidth(self.frame) + insets * (col + 1) + CHAT_BUTTON_SIZE.width * col, INSETS + INSETS * 2 * row + CHAT_BUTTON_SIZE.height * row, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+    [moreButton setImage:image forState:UIControlStateNormal];
+    [moreButton setImage:highLightedImage forState:UIControlStateHighlighted];
+    [moreButton addTarget:self action:@selector(moreAction:) forControlEvents:UIControlEventTouchUpInside];
+    moreButton.tag = MOREVIEW_BUTTON_TAG+_maxIndex;
+    [_scrollview addSubview:moreButton];
+    [_scrollview setContentSize:CGSizeMake(CGRectGetWidth(self.frame) * (page + 1), CGRectGetHeight(self.frame))];
+    [_pageControl setNumberOfPages:page + 1];
+    if (_maxIndex >=5) {
+        frame.size.height = 150;
+        _scrollview.frame = CGRectMake(0, 0, CGRectGetWidth(frame), CGRectGetHeight(frame));
+        _pageControl.frame = CGRectMake(0, CGRectGetHeight(frame) - 20, CGRectGetWidth(frame), 20);
+    }
+    self.frame = frame;
+    _pageControl.hidden = _pageControl.numberOfPages<=1;
+}
+
+- (void)updateItemWithImage:(UIImage *)image highlightedImage:(UIImage *)highLightedImage title:(NSString *)title atIndex:(NSInteger)index
+{
+    UIView *moreButton = [_scrollview viewWithTag:MOREVIEW_BUTTON_TAG+index];
+    if (moreButton && [moreButton isKindOfClass:[UIButton class]]) {
+        [(UIButton*)moreButton setImage:image forState:UIControlStateNormal];
+        [(UIButton*)moreButton setImage:highLightedImage forState:UIControlStateHighlighted];
+    }
+}
+
+- (void)removeItematIndex:(NSInteger)index
+{
+    UIView *moreButton = [_scrollview viewWithTag:MOREVIEW_BUTTON_TAG+index];
+    if (moreButton && [moreButton isKindOfClass:[UIButton class]]) {
+        [self _resetItemFromIndex:index];
+        [moreButton removeFromSuperview];
+    }
+}
+
+#pragma mark - private
+
+- (void)_resetItemFromIndex:(NSInteger)index
+{
+    CGFloat insets = (self.frame.size.width - MOREVIEW_COL * CHAT_BUTTON_SIZE.width) / 5;
+    CGRect frame = self.frame;
+    for (NSInteger i = index + 1; i<_maxIndex + 1; i++) {
+        UIView *moreButton = [_scrollview viewWithTag:MOREVIEW_BUTTON_TAG+i];
+        if (moreButton && [moreButton isKindOfClass:[UIButton class]]) {
+            NSInteger moveToIndex = i - 1;
+            NSInteger pageSize = MOREVIEW_COL*MOREVIEW_ROW;
+            NSInteger page = moveToIndex/pageSize;
+            NSInteger row = (moveToIndex%pageSize)/MOREVIEW_COL;
+            NSInteger col = moveToIndex%MOREVIEW_COL;
+            [moreButton setFrame:CGRectMake(page * CGRectGetWidth(self.frame) + insets * (col + 1) + CHAT_BUTTON_SIZE.width * col, INSETS + INSETS * 2 * row + CHAT_BUTTON_SIZE.height * row, CHAT_BUTTON_SIZE.width , CHAT_BUTTON_SIZE.height)];
+            moreButton.tag = MOREVIEW_BUTTON_TAG+moveToIndex;
+            [_scrollview setContentSize:CGSizeMake(CGRectGetWidth(self.frame) * (page + 1), CGRectGetHeight(self.frame))];
+            [_pageControl setNumberOfPages:page + 1];
+        }
+    }
+    _maxIndex--;
+    if (_maxIndex >=5) {
+        frame.size.height = 150;
+    } else {
+        frame.size.height = 80;
+    }
+    self.frame = frame;
+    _scrollview.frame = CGRectMake(0, 0, CGRectGetWidth(frame), CGRectGetHeight(frame));
+    _pageControl.frame = CGRectMake(0, CGRectGetHeight(frame) - 20, CGRectGetWidth(frame), 20);
+    _pageControl.hidden = _pageControl.numberOfPages<=1;
+}
+
+#pragma setter
+//- (void)setMoreViewColumn:(NSInteger)moreViewColumn
+//{
+//    if (_moreViewColumn != moreViewColumn) {
+//        _moreViewColumn = moreViewColumn;
+//        [self setupSubviewsForType:_type];
+//    }
+//}
+//
+//- (void)setMoreViewNumber:(NSInteger)moreViewNumber
+//{
+//    if (_moreViewNumber != moreViewNumber) {
+//        _moreViewNumber = moreViewNumber;
+//        [self setupSubviewsForType:_type];
+//    }
+//}
+
+- (void)setMoreViewBackgroundColor:(UIColor *)moreViewBackgroundColor
+{
+    _moreViewBackgroundColor = moreViewBackgroundColor;
+    if (_moreViewBackgroundColor) {
+        [self setBackgroundColor:_moreViewBackgroundColor];
+    }
+}
+
+/*
+- (void)setMoreViewButtonImages:(NSArray *)moreViewButtonImages
+{
+    _moreViewButtonImages = moreViewButtonImages;
+    if ([_moreViewButtonImages count] > 0) {
+        for (UIView *view in self.subviews) {
+            if ([view isKindOfClass:[UIButton class]]) {
+                UIButton *button = (UIButton *)view;
+                if (button.tag < [_moreViewButtonImages count]) {
+                    NSString *imageName = [_moreViewButtonImages objectAtIndex:button.tag];
+                    [button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
+                }
+            }
+        }
+    }
+}
+
+- (void)setMoreViewButtonHignlightImages:(NSArray *)moreViewButtonHignlightImages
+{
+    _moreViewButtonHignlightImages = moreViewButtonHignlightImages;
+    if ([_moreViewButtonHignlightImages count] > 0) {
+        for (UIView *view in self.subviews) {
+            if ([view isKindOfClass:[UIButton class]]) {
+                UIButton *button = (UIButton *)view;
+                if (button.tag < [_moreViewButtonHignlightImages count]) {
+                    NSString *imageName = [_moreViewButtonHignlightImages objectAtIndex:button.tag];
+                    [button setImage:[UIImage imageNamed:imageName] forState:UIControlStateHighlighted];
+                }
+            }
+        }
+    }
+}*/
+
+#pragma mark - UIScrollViewDelegate
+
+-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
+{
+    CGPoint offset =  scrollView.contentOffset;
+    if (offset.x == 0) {
+        _pageControl.currentPage = 0;
+    } else {
+        int page = offset.x / CGRectGetWidth(scrollView.frame);
+        _pageControl.currentPage = page;
+    }
+}
+
+#pragma mark - action
+
+- (void)takePicAction{
+    if(_delegate && [_delegate respondsToSelector:@selector(moreViewTakePicAction:)]){
+        [_delegate moreViewTakePicAction:self];
+    }
+}
+
+- (void)photoAction
+{
+    if (_delegate && [_delegate respondsToSelector:@selector(moreViewPhotoAction:)]) {
+        [_delegate moreViewPhotoAction:self];
+    }
+}
+
+- (void)locationAction
+{
+    if (_delegate && [_delegate respondsToSelector:@selector(moreViewLocationAction:)]) {
+        [_delegate moreViewLocationAction:self];
+    }
+}
+
+- (void)takeAudioCallAction
+{
+    if (_delegate && [_delegate respondsToSelector:@selector(moreViewAudioCallAction:)]) {
+        [_delegate moreViewAudioCallAction:self];
+    }
+}
+
+- (void)takeVideoCallAction
+{
+    if (_delegate && [_delegate respondsToSelector:@selector(moreViewVideoCallAction:)]) {
+        [_delegate moreViewVideoCallAction:self];
+    }
+}
+
+- (void)moreAction:(id)sender
+{
+    UIButton *button = (UIButton*)sender;
+    if (button && _delegate && [_delegate respondsToSelector:@selector(moreView:didItemInMoreViewAtIndex:)]) {
+        [_delegate moreView:self didItemInMoreViewAtIndex:button.tag-MOREVIEW_BUTTON_TAG];
+    }
+}
+
+@end

--
Gitblit v1.8.0