天天看点

iOS开发之微信聊天工具栏的封装

  微信大家基本上都用过,今天要做的就是微信的聊天工具条。聊天工具条还是比较复杂的,其中包括发送表情,发送文字,发送图片,发送声音,拍照等等功能,下面给出发送录音,文字,表情的代码,其他的和这几样类似。还是那句话百字不如一图,先来几张效果图吧。

iOS开发之微信聊天工具栏的封装
iOS开发之微信聊天工具栏的封装

  

  一:toolview预留的接口

    在封装toolview中主要用到block回调,读者可以根据自己的个人习惯来选择是block回调,还是委托回调或者是目标动作回调(笔者更喜欢block回调),下面的代码是toolview给调用者提供的接口

  二:初始化toolview中所需的控件

    1.为了更好的封装我们的组件,在.h中预留接口,在toolview.m的延展中添加我们要使用的组件(私有属性),延展代码如下:

    2.接受相应的block回调,把block传入toolview中,代码如下: 

    3.控件的初始化,纯代码添加toolview中要用到的组件(分配内存,配置相应的属性),因为是自定义组件的封装,所以我们的storyboard就用不上啦,添加控件的代码如下:

  4.给我们的控件添加相应的约束,为了适合不同的屏幕,所以自动布局是少不了的。当然啦给控件添加约束也必须是手写代码啦,添加约束的代码如下:

    5.因为我们要发送录音,所以对音频部分的初始化是少不了的,以下代码是对音频的初始化

    6.添加键盘回收键done

 三.编写控件的回调方法

    控件添加好以后下面要添加触发控件要干的事情:

    2.下面的代码是检测音量的变化,用于根据音量变化图片,代码如下:

    3.轻击输入框时,切换到系统键盘,代码如下:

    4.通过输入框的文字多少改变toolview的高度,因为输入框的约束是加在toolview上的,所以需要把输入框的contentsize通过block传到toolview的调用者上,让toolview的父视图来改变toolview的高度,从而sendtextview的高度也会随着改变的,下面的代码是把contentsize交给父视图:代码如下:

    效果如下,文字多时textview的高度也会增大:

iOS开发之微信聊天工具栏的封装

    5.点击最左边的按钮触发的事件(切换文本输入框和录音按钮),代码如下:

    6.点击return发送文字(通过block回调传入到父视图上),代码如下:

    7.录音按钮本身要做的事情(在longpress没有被触发时调用)代码如下:

    8.调用表情键盘:

  以上就是toolview的所有封装代码,至于在controller中如何使用他来发送消息,如何定义聊天cell,如何处理录音文件,聊天时的气泡是如何实现的等功能,在以后的博客中会继续讲解,希望大家继续关注。