開(kāi)發(fā)此聊天界面時(shí)蝌诡,參考了第三方庫(kù)TLChat來(lái)進(jìn)行開(kāi)發(fā)溉贿。
在與后臺(tái)交互時(shí),由于使用的是輪循請(qǐng)求數(shù)據(jù)浦旱,設(shè)置定時(shí)器五秒請(qǐng)求一次宇色,在后臺(tái)消息正常發(fā)送時(shí),不會(huì)出現(xiàn)此問(wèn)題颁湖,但是在后臺(tái)消息發(fā)送非常迅速時(shí)宣蠕,frame沒(méi)有重新計(jì)算,導(dǎo)致下一個(gè)cell的寬度和高度使用的是上一個(gè)cell的高度和寬度甥捺。
- (ZYMessageFrame *)messageFrame
{
if (kMessageFrame == nil) {
kMessageFrame = [[ZYMessageFrame alloc] init];
kMessageFrame.height = 20 + (self.showTime ? 30 : 0) + (self.showName ? 15 : 0) + 20;
NSString *leftStr?? = @"[link]";
NSString *rightStr? = @"[/link]";
NSString *lastStr?? = [self.text stringByReplacingOccurrencesOfString:leftStr withString:@""];
NSString *finalStr? = [lastStr stringByReplacingOccurrencesOfString:rightStr withString:@""];
[textLabel setText:finalStr];
kMessageFrame.contentSize = [textLabel sizeThatFits:CGSizeMake(MAX_MESSAGE_WIDTH, MAXFLOAT)];
kMessageFrame.height += kMessageFrame.contentSize.height;
}
return kMessageFrame;
}
此處使用kMessageFrame來(lái)重新計(jì)算高度布局植影,由于涉及到其它問(wèn)題,所以對(duì)其中的某些方法也進(jìn)行了改造涎永,具體可參照以下文章
聊天界面調(diào)用訊飛語(yǔ)音轉(zhuǎn)換為文字思币,文字在cell上不顯示
Xcode9.2運(yùn)行iOS11系統(tǒng)時(shí),下方鍵盤彈出導(dǎo)致statusBar顏色變化
iOS NSMutableArray使用addObject:方法時(shí)數(shù)據(jù)被覆蓋
iOS向后臺(tái)發(fā)送圖片羡微,圖片被翻轉(zhuǎn)以及圖片過(guò)大谷饿,發(fā)送緩慢問(wèn)題的解決
使用
- (id)mutableCopyWithZone:(NSZone *)zone
{
ZYMessage *message = [[ZYMessage alloc]init];
message.messageFrame = self.messageFrame;
message.content = self.content;
message.text = self.text;
message.attrText = self.attrText;
message.messageID = self.messageID;
message.showName = self.showName;
message.showTime = self.showTime;
message.partnerType =self.partnerType;
message.messageType = self.messageType;
message.ownerTyper = self.ownerTyper;
message.sendState? = self.sendState;
message.imageURL?? = self.imageURL;
message.imagePath? = self.imagePath;
message.imageSize = self.imageSize;
return message;
}
來(lái)保存了frame
在嘗試了各種方法之后,選擇在此方法中
將frame先清空的方法
- (void)resetMessageFrame
{
kMessageFrame = nil;
}
調(diào)用此方法后妈倔,顯示正常博投。
若各位有更好方法,請(qǐng)告知盯蝴。謝謝毅哗。