首页 > 其他分享 >如何实现自定义表情?

如何实现自定义表情?

时间:2023-12-21 21:02:01浏览次数:42  
标签:index 自定义 如何 tab RCDCustomerEmoticonTab 表情 emoticonTab1 view

1、继承实现协议 RCEmoticonTabSource

2、在实现的代理方法 loadEmoticonView 返回 View ,(返回的以下图中红框区域,里面的视图及逻辑需要自己来添加实现) 3、在会话页面 viewdidLoad 里添加表情包

示例代码(Demo 源码 2中的类 RCDCustomerEmoticonTab ):

RCDCustomerEmoticonTab.h

@interface RCDCustomerEmoticonTab : NSObject

/*!

表情tab的标识符

@return 表情tab的标识符,请勿重复

*/

@property(nonatomic, strong) NSString *identify;

/*!

表情tab的图标

@return 表情tab的图标

*/

@property(nonatomic, strong) UIImage *image;

/*!

表情tab的页数

@return 表情tab的页数

*/

@property(nonatomic, assign) int pageCount;

/*!

表情tab的index页的表情View

@return 表情tab的index页的表情View

@discussion 返回的 view 大小必须等于 contentViewSize (宽度 = 屏幕宽度,高度 =

186)

*/

\- (UIView *)loadEmoticonView:(NSString *)identify index:(int)index;

@end

RCDCustomerEmoticonTab.m

@implementation RCDCustomerEmoticonTab

  • (UIView *)loadEmoticonView:(NSString *)identify index:(int)index {

UIView *view = [[UIView alloc]

initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 186)];

view11.backgroundColor = [UIColor blackColor];

switch (index) {

case 1:

view.backgroundColor = [UIColor yellowColor];

break;

case 2:

view.backgroundColor = [UIColor redColor];

break;

case 3:

view.backgroundColor = [UIColor greenColor];

break;

case 4:

view.backgroundColor = [UIColor grayColor];

break;

default:

break;

}

return view;

}

@end 在会话页面 viewDidLoad 添加自定义表情

UIImage *icon = [RCKitUtility imageNamed:@"emoji_btn_normal"

ofBundle:@"RongCloud.bundle"];

RCDCustomerEmoticonTab *emoticonTab1 = [RCDCustomerEmoticonTab new];

emoticonTab1.identify = @"1";

emoticonTab1.image = icon;

emoticonTab1.pageCount = 2;

[self.chatSessionInputBarControl.emojiBoardView addEmojiTab:emoticonTab1];

标签:index,自定义,如何,tab,RCDCustomerEmoticonTab,表情,emoticonTab1,view
From: https://blog.51cto.com/u_16340920/8926796

相关文章

  • 如何实现双击文本消息放大
    如何实现双击文本消息放大1、需要先创建一个RCTextMessageCell的category。添加一个代理@property(nonatomic,weak)iddelegate和其代理方法(void)doubleTapTextMessage:(RCMessageModel*)model;2、在category中重写-(void)initialize方法,添加手势。并将代理抛出去。3......
  • 输入工具栏修改样式、emoji 表情栏修改背景色
    问题1解决方案:修改输入框的调用的setInputBarType:style:请在聊天页面所在的控制器viewDidLoad中调用;在创建聊天页面的时候调用是没有效果的问题2解决方案:在聊天页面调用下面两行代码self.chatSessionInputBarControl.emojiBoardView.emojiBackgroundView.backgroundColor......
  • Visual Studio如何再次配置一个曾经配置过的C++库?
      本文介绍在VisualStudio软件中调用C++各种配置、编译完毕的第三方库的方法。  在撰写C++代码时,如果需要用到他人撰写的第三方库(例如地理数据处理库GDAL、矩阵运算库Armadillo等),并不能像Python等语言那样,安装好库后直接在不同代码文件中使用;而是需要每一次新建一个代码文......
  • 自定义中间表(中介模型)
    1多对多关系中,第三张表的建立 -默认使用ManyToMany,自动创建-使用中介模型 -即手动创建第三张表,又要使用好用的查询-完全自己写第三张表#使用中介模型classAuthor(models.Model):nid=models.AutoField(primary_key=True)name=models.CharField(max_length=......
  • 如何判断一个sql走不走索引?
    在你的工作中,可能写过很多个sql,我相信最让你头疼的,一定还是那风骚的查询sql。我猜你很可能有这样的体验,好不容易写了一个牛逼哄哄的查询sql,兴奋的上线投产。结果,在第二天阳光明媚的日子里,dba把你的sql揪了出来,揪出来还不算,dba还要发到群里@你,说:“嗨,兄弟,瞅瞅你写的个啥?”接着,dba......
  • 直播预告 | 大模型时代,“应用变了”:政务办公,如何从大模型中巧借力?
    医疗健康,直播娱乐,聊天工具,通勤支付应用融入了我们生活的方方面面。协同办公应用,因具有丰富的文书理解、会议总结、对话摘要等人机交互需求,成为大模型落地产业的最佳应用场景之一而相较普通办公场景政务场景下的协同办公对模型训练、部署、使用提出了更严谨的要求12月22日(本周......
  • mongo如何使用脚本更新数据
    前言数据更新是我们日常操作数据库必不可少的一部分,下面这篇文章就给大家分享了操作MongoDB数据更新的一些干货,对大家具有一定的参考学习价值,一起来学习学习吧。常用的函数update(,,,),其中表示筛选的条件,是要更新的数据updateMany()更新所有匹配到的数据upsertupsert是一个布......
  • 如何在C#中将float[]快速的转换为byte[]
    昨天喻兄抛出一个问题“如何在C#中将float[]快速的转换为byte[]”。于是开始了尝试。先写了下面的初始化代码usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;Randomrandom=newRandom();//源数组varsrcArray=newfloat[500*1024*1024];//目的数......
  • 如何给开源项目发起提案
    背景前段时间在使用Pulsar的adminAPI时,发现其中的一个接口响应非常慢:admin.topics().getPartitionedStats(topic);使用curl拿到的响应结果非常大,同时也非常耗时:具体的issue在这里:https://github.com/apache/pulsar/issues/21200后面经过分析,是因为某些topic的生......
  • 如何新建SpringBoot2.7.X项目
    新版的idea在创建SpringBoot项目时最低的JDK都需要选择jdk17,可是我的本地只有jdk8,通过创建maven工程,然后在pom中手动填写相关依赖等信息来创建项目,pom文件内容(官网copy的)<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-......