我有消息屏幕,并为显示消息实现自定义tableviewcell
。一条消息应该是text
或image
,在某些情况下,我需要显示带有信息的框(请参阅图像发送方和接收方)。它工作正常,但某些时候消息视图被切断(请参阅图像消息)。我使用了许多stackViews
来隐藏和显示一些视图。
请找到code here,以了解更多信息。
答案 0 :(得分:0)
这种行为的可能原因是在单元格中设置了视图的图层,我可以在您的单元格中看到,您正在将拐角半径添加到背景中。我可以使用以下方法在我的应用程序中对其进行修复。
在单元格中定义可选的数据变量。
var currentData: MessageModel?
在您要向单元格提供数据的方法中设置该值。
func loadData(_ data:MessageModel) -> Void {
currentData = data
// YOUR EXISTING CODE GOES HERE.
// Move your code to the function which do the setup of corner radius.
// Call this method.
setupCornerRadius()
}
将以下方法添加到您的单元格
open override func layoutIfNeeded() {
super.layoutIfNeeded()
setupCornerRadius()
}
open override func layoutSubviews() {
super.layoutSubviews()
setupCornerRadius()
}
func setupCornerRadius() {
if let data = currentData {
let strMsg = data.body ?? ""
lblMsgBody.text = strMsg
if strMsg != "" {
viewBG.backgroundColor = UIColor.primaryGreen
if strMsg.count > 5 {
viewBG.layer.cornerRadius = 18.0
}else{
viewBG.layer.cornerRadius = 12.0
}
}
else{
viewBG.backgroundColor = UIColor.clear
}
}
}
尝试以上方法。
与此同时,我从单元中删除了stackView并通过设置约束设法实现了所需的UI。
具有numberOfLines = 0的标签,并设置前导,尾随,底部和顶部约束。值= 8(您可以根据需要设置边距和间距来设置它。)
尝试并分享结果。
答案 1 :(得分:0)
使用UI调试器,看看到底发生了什么。