聊天室(上)- 客制元件Xib建立

缘由:

聊天室优化时有几个的地方我花比较多时间,我先列举一下:
1. 可以在送出的讯息中插入自订的表情符号
2. Xib制作和引入
光是第一项我就搞了超久的,一度怀疑自己不适合走上写程序这途,
参考了网路上很多大神的写法,发现一个很可行,
於是发现了NSMutableAttributedString这个很棒又很难懂的东西,
图文混排的呈现,靠它就对了
下篇再专注於第一项的解法
这篇先来制作xib

关於聊天室的布局:

https://ithelp.ithome.com.tw/upload/images/20210908/20130757OAcIUBBnR3.png
聊天室对话框的底是用tableview
表情符号的显示是用一个view包着
底部则为输入框和按钮区
当然为了排版的方便有使用StackView
对话框的部分有客制了两个xib
https://ithelp.ithome.com.tw/upload/images/20210908/2013075763pIGw8O5o.png
https://ithelp.ithome.com.tw/upload/images/20210908/20130757p2WrB99Ryb.png

xib档案的创建方法如下:

1.在你要创建的目录下按右键选择”New File...”,然後会弹出下图的视窗,选择”User Interface”里的”View”项目,点击Next。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757vjIGl3AddX.png
2.然後自订一下档名(等等创建一个一样档名的class),勾选要使用的”Targets”,然後创建Xib档案。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757aSjw8up4XD.png
3.会在指定目录底下看到新的Xib档。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757immqcHPMtG.png
4.接着循着刚刚的步骤,选择”Source“底下的”Swift File”。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757GITZFsfaW3.png
5.然後一样记得勾选指定的”Targets”,就可以创建完成了。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757o1GzFX214F.png
6.完成如下所示。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757aBUfqvH78l.png
7.然後至xib档案右侧栏设定class,然後就可以开始布局了。
https://ithelp.ithome.com.tw/upload/images/20210908/20130757XFlNIyGBLV.png
8.引用进tableview
在viewDidLoad(),加上下面这段:
注册这个元件供tableview使用

let myCell = UINib(nibName: “testCustomView”, bundle: nil)
TableView.register(myCell, forCellReuseIdentifier: “myCell")

在ViewController继承UITableViewDelegate与UITableViewDataSource 的下面加上下面这段:
在tableviewcell使用客制元件

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let myCell = tableView.dequeueReusableCell(withIdentifier: “myCell") as! testCustomView
        myCell.delegate = self
        myCell.selectionStyle = .none
}

//记得一定要代理,不然你做得再美都不会生效


<<:  DAY 13 资料库-建立并操作Heroku PostgreSQL

>>:  IT 铁人赛 k8s 入门30天 -- day11 Helm - Package Manager

Day 0x12 - 建立 Return URL 的画面

0x1 前言 废话不多说,今日流程如下先观察传进内容,在针对内容刻画面 0x2 建立 Route 跟...

Google Static Map Maker 静态地图 API 工具|专案实作

Google Static Map API 是将网页上需要的地图画面,以静态地图图片的方式显示。 优...

[Day 05] 部署模式 — 我的模型叫崔弟

常见部署情况 根据需求不同,有不一样的部署模式,常见的情况如下: 提供新的产品/功能:常用的设计模式...

DAY 22 Big Data 5Vs – Variety(速度) Kinesis (2)

接续介绍Kinesis家族中其它更实用的资料分析服务: 进入Kinesis服务首页可以看到这三个常常...

[Day4] Android - Kotlin笔记:RecyclerView Adapter - ListAdapter + DiffUtil

来介绍一下DiffUtil 以往我们在使用RecyclerView时最常使用的是 RecyclerV...