123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- //
- // 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()<UIScrollViewDelegate>
- //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 <LZBEmojiModel *> *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 <LZBEmojiModel *>*)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<LZBEmojiModel *> *)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
|