iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Mobile Development

轉職App開發打怪雜記系列 第 25

聊天室(上)- 客製元件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
}

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


上一篇
Firebase推播(下) - 圖片推播
下一篇
聊天室(下)- 圖文混排的實現
系列文
轉職App開發打怪雜記30

尚未有邦友留言

立即登入留言