UITableview单元格切断了一些消息(视图)

时间:2018-08-18 11:16:58

标签: ios iphone uitableview

我有消息屏幕,并为显示消息实现自定义tableviewcell。一条消息应该是textimage,在某些情况下,我需要显示带有信息的框(请参阅图像发送方和接收方)。它工作正常,但某些时候消息视图被切断(请参阅图像消息)。我使用了许多stackViews来隐藏和显示一些视图。

请找到code here,以了解更多信息。

sender
receiver
enter image description here

2 个答案:

答案 0 :(得分:0)

这种行为的可能原因是在单元格中设置了视图的图层,我可以在您的单元格中看到,您正在将拐角半径添加到背景中。我可以使用以下方法在我的应用程序中对其进行修复。

  1. 在单元格中定义可选的数据变量。

    var currentData: MessageModel?
    
  2. 在您要向单元格提供数据的方法中设置该值。

    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()
    }   
    
  3. 将以下方法添加到您的单元格

    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调试器,看看到底发生了什么。