xib制作聊天界面

仿QQ聊天布局

目前查到的资料大部分都是这样的效果,而且设计的思路都是一样的,

一个tableview使用一个自定义的cell,当cell成功创建以后,依靠一个中介类传递的数据来判断到底是左边还是右边发送的数据,然后重新绘制内容或者布局。

但是对于习惯xib来说,并不擅长代码适配和布局,遂根据思路调整

首先界面

然后是自定义的cell

虽然看起来很奇怪 但是根据思路的话这是一种简单粗暴的方法,这个cell其实是两边单独显示时的效果合并在一起的,通过数据的中介类可以知道应该需要显示那边,然后隐藏另外一边的数据显示

    dataSource.blockConfigureCell=^(CellFour* cell,Message* model)
    {
        cell.CFMessage=model;
        switch (cell.CFMessage.MCellSystle)
        {
            case CellSystleLeft:
            {
                cell.headimageRight.hidden=YES;
                cell.CFbackGroundRight.hidden=YES;
                cell.message.text=model.MDictionary[@"message"];

            }
                break;
                case CellSystleRight:
            {
                cell.headImage.hidden=YES;
                cell.CFbackGroundLeft.hidden=YES;
                cell.messageRight.text=model.MDictionary[@"message"];

            }
                break;
            default:
                break;
        }
    };

其实这也是很无奈的做法,开始的时候使用的是两个自定义的cell即左边和右边的显示cell是独立开的,但是在注册时就会产生两个重用的标示,虽然在不进行重用的时候显示也可以达到以上的效果,但是一旦进入了重用队列里面那么就会只用最新修改的重用标示,最终的结果就是所有的样式变成一个样式不分左右。

然后又尝试了一下,一个自定义的cell里面含有两种样式,虽然解决了重用标示的问题,但是问题就是cell创建的问题,因为这种会在创建就决定了cell是左边显示的还是右边显示的,但是传递cell的中介类告诉cell

应该使用那种样式的时候cell已经创建完成了(创建之前传递数据的话cell为空就没意义了)。就达不到动态调整的目的了。

问题暂时纪录一下,所以两边如果想做到不同的显示效果的话像qq的不同气泡(xib会比较麻烦代码反而会简单一点)。

时间: 2024-07-29 06:47:16

xib制作聊天界面的相关文章

android Nine-Patch的使用(制作聊天界面必学)

近期在学习制作聊天的界面,设计到了图片的拉伸问题等等,参考了部分书籍学习了制作Nine-Patch图片. 首先先看不使用Nine_patch的代码与效果: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_p

Android学习笔记(十二)——实战:制作一个聊天界面

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 运用简单的布局知识,我们可以来尝试制作一个聊天界面. 一.制作 Nine-Patch 图片 : Nine-Patch图片是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而哪些区域不可以.一般用来作为聊天信息的背景.在此我们先准备一张png图片.然后在 Android sdk 目录下有一个 tools 文件夹,在这个文件夹中找到 draw9patch.bat文件. 双击打开之后, 在导航栏点击 File→

Android开发学习之路--UI之简单聊天界面

学了很多的ui的知识,这里就来实现个聊天的界面,首先来实现个layout的xml,代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:lay

android#编写一个聊天界面

摘自<第一行代码>——郭霖 既然是要编写一个聊天界面,那就肯定要有收到的消息和发出的消息.上一节中我们制作的message_left.9.png可以作为收到消息的背景图,那么毫无疑问你还需要再制作一张message_right.9.png作为发出消息的背景图.图片都提供好了之后就可以开始编码了,首先还是编写主界面,修改activity_main.xml中的代码,如下所示: <LinearLayout xmlns:android="http://schemas.android.c

聊天界面-自适应文字

该篇文章主要介绍一个实现聊天界面的思路过程,源码可以在 源码链接 获得,该工程实现聊天的基本功能,功能还不够完善,欢迎大家提PR,效果图如下所示 我希望通过相对简单的方式实现界面的布局,没有复杂的计算达到自适应的效果. iOS8新功能介绍 虽然self size cell最终没有在我的工程中用到,但是这是我曾经挖过的坑,所以在此做了简单的介绍. 在iOS 8 中,UITableView新增一项功能 self size cells,这是一项通过 UITableViewCell 的约束自动自动计算U

聊天界面之气泡文本cell(二)使用Autolayout

聊天界面主要是cell的动态高度计算和效率的问题,参考网上的两篇文章: 1.优化UITableViewCell高度计算的那些事  http://www.cocoachina.com/ios/20150518/11854.html 2.动态计算UITableViewCell高度详解  http://www.cocoachina.com/industry/20140604/8668.html 因为对Autolayout也有一定的了解,决定一试,把动态调整高度交给ios自己处理.最后发现这个方案还是很

nodejs+websocket制作聊天室视频教程

本套教程主要讲解了node平台的安装,node初级知识.node 服务器端程序响应http请求,通过npm安装第三方包,websocket即时通讯.聊天页面界面制作.拖动原理.拖动效果.遮罩效果.定位和浮动.滚动条滚动高度设置.用户进入与离开聊天室提示.当前在线人数的即时统计和显示.以及群聊和私聊两大聊天功能.本套教程js代码稍微有点多,对0基础的初学者可能会有一定的难度,希望通过本套教程的学习,让大家认识nodejs,感受用js写服务器端程序的乐趣. 本教程是高清完整版视频教程. 技术咨询和交

Android,iOS打开手机QQ与指定用户聊天界面

在浏览器中可以通过JS代码打开QQ并弹出聊天界面,一般作为客服QQ使用.而在移动端腾讯貌似没有公布提供类似API,但是却可以使用schema模式来启动手机QQ. 以下为具体代码: Android: String url="mqqwpa://im/chat?chat_type=wpa&uin=123456"; startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); iOS: UIWebView *webView

android 仿微信聊天界面

一些IM聊天软件我们发现,他的展现形式,是左右分开的形式,而我们的listview很多时候是显示同一个布局,其实BaseAdapter中有2个重要的方法在大多数情况下我们并未使用到,一个是public int getViewTypeCount(),它是显示listview中有多少种布局,默认是显示是1,像微信那样聊天界面,是有2种布局方式,:另外一个getItemViewType(),它是在那些item条目中显示那种布局,下面就简单的模拟下微信的聊天界面做法: MainActivity.java