| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- //
- // TUIFaceSegementScrollView.m
- // TUIEmojiPlugin
- //
- // Created by wyl on 2023/11/15.
- // Copyright © 2023 Tencent. All rights reserved.
- //
- #import "TUIFaceSegementScrollView.h"
- #import <TIMCommon/TIMDefine.h>
- #import <TIMCommon/TUIFitButton.h>
- #import <TUICore/TUIThemeManager.h>
- #import <TIMCommon/TIMCommonMediator.h>
- #import <TIMCommon/TUIEmojiMeditorProtocol.h>
- @interface TUIFaceSegementScrollView () <UIScrollViewDelegate>
- @property(nonatomic, strong) NSArray<TUIFaceGroup *> *items;
- @property(nonatomic, strong) NSMutableArray<TUIFaceVerticalView*> * viewArray;
- @end
- @implementation TUIFaceSegementScrollView
- - (void)setItems:(NSArray<TUIFaceGroup *> *)items delegate:(id <TUIFaceViewDelegate>) delegate {
- _items = items;
- for (UIView *view in self.pageScrollView.subviews) {
- if (view) {
- [view removeFromSuperview];
- }
- }
- [self.viewArray removeAllObjects];
-
- for (int i = 0; i < items.count; i++) {
- TUIFaceVerticalView* faceView = [[TUIFaceVerticalView alloc] initWithFrame:CGRectMake(0,
- 0, self.frame.size.width, self.pageScrollView.frame.size.height)];
- TUIFaceGroup *indexGroup = items[i];
- if (indexGroup.recentGroup) {
- [faceView setData:[NSMutableArray arrayWithArray:@[indexGroup.recentGroup,indexGroup]]];
- }
- else {
- [faceView setData:[NSMutableArray arrayWithArray:@[indexGroup]]];
- }
- faceView.frame = CGRectMake(i * self.frame.size.width, 0, self.frame.size.width, self.pageScrollView.frame.size.height);
- faceView.delegate = delegate;
- [self.pageScrollView addSubview:faceView];
- [self.viewArray addObject:faceView];
- }
- self.pageScrollView.contentSize = CGSizeMake(self.viewArray.count * self.frame.size.width, self.pageScrollView.frame.size.height);
- if (isRTL()) {
- _pageScrollView.transform = CGAffineTransformMakeRotation(M_PI);
- NSArray *subViews = _pageScrollView.subviews;
- for (UIView *subView in subViews) {
- subView.transform = CGAffineTransformMakeRotation(M_PI);
- }
- }
- }
- - (void)updateContainerView {
- self.pageScrollView.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
- for (int i = 0; i < self.viewArray.count; i++) {
- TUIFaceVerticalView* view = self.viewArray[i];
- view.frame = CGRectMake(i * self.pageScrollView.frame.size.width, 0, self.pageScrollView.frame.size.width, self.pageScrollView.frame.size.height);
- }
- self.pageScrollView.contentSize = CGSizeMake(self.viewArray.count * self.frame.size.width, self.pageScrollView.frame.size.height);
- }
- - (UIScrollView *)pageScrollView {
- if (_pageScrollView == nil) {
- _pageScrollView = [[UIScrollView alloc]
- initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
- _pageScrollView.backgroundColor = [UIColor clearColor];
- _pageScrollView.delegate = self;
- _pageScrollView.showsVerticalScrollIndicator = NO;
- _pageScrollView.showsHorizontalScrollIndicator = NO;
- _pageScrollView.bounces = NO;
- _pageScrollView.scrollsToTop = NO;
- _pageScrollView.pagingEnabled = YES;
- [self addSubview:_pageScrollView];
- }
- return _pageScrollView;
- }
- - (NSMutableArray<TUIFaceVerticalView *> *)viewArray {
- if(!_viewArray) {
- _viewArray = [NSMutableArray arrayWithCapacity:3];
- }
- return _viewArray;
- }
- - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
- if (scrollView == _pageScrollView) {
- int p = _pageScrollView.contentOffset.x / self.frame.size.width;
- if (self.onScrollCallback){
- self.onScrollCallback(p);
- }
- }
- }
- - (void)setPageIndex:(NSInteger)index {
- CGPoint p = CGPointMake(_pageScrollView.frame.size.width * index,0);
- [_pageScrollView setContentOffset:p animated:NO];
- }
- - (void)setAllFloatCtrlViewAllowSendSwitch:(BOOL)isAllow {
- for (TUIFaceVerticalView *view in self.viewArray) {
- [view setFloatCtrlViewAllowSendSwitch:isAllow];
- }
- }
- - (void)updateRecentView {
- id<TUIEmojiMeditorProtocol> service = [[TIMCommonMediator share] getObject:@protocol(TUIEmojiMeditorProtocol)];
- TUIFaceVerticalView* faceView = self.viewArray[0];
- TUIFaceGroup *indexGroup = self.items[0];
- indexGroup.recentGroup = [service getChatPopMenuRecentQueue];
- indexGroup.recentGroup.rowCount = 1;
- indexGroup.recentGroup.itemCountPerRow = 8;
- indexGroup.recentGroup.groupName = TIMCommonLocalizableString(TUIChatFaceGroupRecentEmojiName);
- if (indexGroup.isNeedAddInInputBar && indexGroup.recentGroup) {
- [faceView setData:[NSMutableArray arrayWithArray:@[indexGroup.recentGroup,indexGroup]]];
- }
- else {
- [faceView setData:[NSMutableArray arrayWithArray:@[indexGroup]]];
- }
- }
- @end
|