// // LZBFaceView.m // LZBKeyBoardView // // demo地址:https://github.com/lzbgithubcode/LZBKeyBoardView.git // Created by zibin on 16/12/6. // Copyright © 2016年 apple. All rights reserved. // #import "LZBFaceView.h" #import "LZBFaceSignlePageView.h" #define LZBColorRGB(r,g,b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1] @interface LZBFaceView() //View @property (nonatomic, strong) UIScrollView *scroollView; @property (nonatomic, strong) UIPageControl *pageControl; @property (nonatomic, strong) UIButton *sendButton; @property (nonatomic, strong) UIButton *chatEmojiBtn; @property (nonatomic, strong) UIButton *animationEmojiBtn; //data @property (nonatomic, strong) NSArray *emojiModles; //表情赋值 @property (nonatomic, copy) void (^emojiDidDeleteBlock)(void); //表情删除回调 @property (nonatomic, copy) void (^emojiDidSendBlock)(void); //表情发送回调 @property (nonatomic, copy) void (^emojiDidSelectBlock)(LZBEmojiModel *emojiModel); //选中某个表情回调 @end @implementation LZBFaceView - (instancetype)initWithFrame:(CGRect)frame { if(self = [super initWithFrame:frame]) { self.backgroundColor = HexColorFromRGB(0x2A2935); [self addSubview:self.scroollView]; [self addSubview:self.pageControl]; [self addSubview:self.sendButton]; [self addSubview:self.chatEmojiBtn]; [self addSubview:self.animationEmojiBtn]; } return self; } - (void)layoutSubviews { [super layoutSubviews]; //发送按钮 self.sendButton.frame = CGRectMake(self.bounds.size.width - 62.0f - 14.0f, self.bounds.size.height - 33.0f - 7.0f - SafeHeight, 62.0f, 33.0f); self.chatEmojiBtn.frame = CGRectMake(0, self.bounds.size.height - 33.0f - 7.0f - SafeHeight, 84.0f, 33.0f); self.animationEmojiBtn.frame = CGRectMake(self.chatEmojiBtn.mj_w, self.bounds.size.height - 33.0f - 7.0f - SafeHeight, 84.0f, 33.0f); //scrollView self.scroollView.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height - self.sendButton.bounds.size.height - 14.0f - SafeHeight); self.pageControl.frame = CGRectMake(0, self.scroollView.mj_h - 8.0f, self.bounds.size.width, 8.0f); //单个面板控件 NSInteger count = self.scroollView.subviews.count; for (NSInteger i = 0; i < count; i++) { LZBFaceSignlePageView *pageView = self.scroollView.subviews[i]; CGFloat pageViewW = self.scroollView.bounds.size.width; CGFloat pageViewH = self.scroollView.bounds.size.height; CGFloat pageViewY = 0; CGFloat pageViewX = pageViewW * i; pageView.frame = CGRectMake(pageViewX, pageViewY, pageViewW, pageViewH); } self.scroollView.contentSize = CGSizeMake(self.scroollView.bounds.size.width * count, 0); } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { double pageNo = scrollView.contentOffset.x / scrollView.bounds.size.width; self.pageControl.currentPage = (int)(pageNo + 0.5); } #pragma mark - handle - (void)setEmojiModles:(NSArray *)emojiModles selectEmojiModelBlock:(void(^)(LZBEmojiModel*selectModel))selectBlock deleteBlcok:(void(^)())deleteBlcok sendBlcok:(void(^)())sendBlock { self.emojiDidSendBlock = sendBlock; self.emojiDidDeleteBlock = deleteBlcok; self.emojiDidSelectBlock = selectBlock; self.emojiModles = emojiModles; } - (void)sendButtonClick { if(self.emojiDidSendBlock) self.emojiDidSendBlock(); } - (void)animationEmojiBtnClick{ if (self.animationEmojiBtnClickBlock != nil) { self.animationEmojiBtnClickBlock(); } } - (void)setEmojiModles:(NSArray *)emojiModles { _emojiModles = emojiModles; [self.scroollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; NSInteger pageCount = (emojiModles.count + LZBFaceSignlePageView_AllEmjoiCount - 1)/LZBFaceSignlePageView_AllEmjoiCount; self.pageControl.numberOfPages = pageCount; for (NSInteger i = 0; i < pageCount; i++) { LZBFaceSignlePageView *pageView = [[LZBFaceSignlePageView alloc]init]; pageView.emojiDidDeleteBlock = self.emojiDidDeleteBlock; pageView.emojiDidSelectBlock = self.emojiDidSelectBlock; NSRange range; range.location = i * LZBFaceSignlePageView_AllEmjoiCount; NSInteger remainCount = emojiModles.count - range.location; if(remainCount >= LZBFaceSignlePageView_AllEmjoiCount) range.length = LZBFaceSignlePageView_AllEmjoiCount; else range.length = remainCount; pageView.emojiSignlePageModles = [emojiModles subarrayWithRange:range]; [self.scroollView addSubview:pageView]; } [self setNeedsLayout]; } #pragma mark - lazy - (UIScrollView *)scroollView { if(_scroollView == nil) { _scroollView = [[UIScrollView alloc]init]; _scroollView.pagingEnabled = YES; _scroollView.delegate = self; _scroollView.showsHorizontalScrollIndicator = NO; _scroollView.showsVerticalScrollIndicator = NO; } return _scroollView; } - (UIPageControl *)pageControl { if(_pageControl == nil) { _pageControl = [[UIPageControl alloc]init]; _pageControl.hidesForSinglePage = YES; _pageControl.userInteractionEnabled = NO; _pageControl.currentPageIndicatorTintColor = [UIColor whiteColor]; _pageControl.pageIndicatorTintColor = [[UIColor whiteColor] colorWithAlphaComponent:0.4f]; } return _pageControl; } - (UIButton *)sendButton{ if (_sendButton == nil) { _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_sendButton setBackgroundImage:[LCTools ColorImage:CGSizeMake(62.0f, 33.0f) FromColors:@[HexColorFromRGB(0xFF0084),HexColorFromRGB(0xFF3A00)] ByGradientType:GradientLeftToRight] forState:UIControlStateNormal]; _sendButton.layer.cornerRadius = 16.5f; _sendButton.clipsToBounds = YES; [_sendButton setTitle:@"发送" forState:UIControlStateNormal]; [_sendButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; _sendButton.titleLabel.font = LCFont(14.0f); [_sendButton addTarget:self action:@selector(sendButtonClick) forControlEvents:UIControlEventTouchUpInside]; } return _sendButton; } - (UIButton *)chatEmojiBtn{ if(!_chatEmojiBtn){ _chatEmojiBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_chatEmojiBtn setTitle:@"聊天表情" forState:UIControlStateNormal]; [_chatEmojiBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; _chatEmojiBtn.titleLabel.font = LCFont(12.0f); _chatEmojiBtn.userInteractionEnabled = NO; } return _chatEmojiBtn; } - (UIButton *)animationEmojiBtn{ if(!_animationEmojiBtn){ _animationEmojiBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_animationEmojiBtn setTitle:@"互动表情" forState:UIControlStateNormal]; [_animationEmojiBtn setTitleColor:HexColorFromRGB(0x9F9DA5) forState:UIControlStateNormal]; _animationEmojiBtn.titleLabel.font = LCFont(12.0f); _animationEmojiBtn.hidden = YES; [_animationEmojiBtn addTarget:self action:@selector(animationEmojiBtnClick) forControlEvents:UIControlEventTouchUpInside]; } return _animationEmojiBtn; } - (void)setIsCurrentUserUpSeat:(BOOL)isCurrentUserUpSeat{ _isCurrentUserUpSeat = isCurrentUserUpSeat; if (isCurrentUserUpSeat) { self.animationEmojiBtn.hidden = NO; }else{ self.animationEmojiBtn.hidden = YES; } } @end