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

Ile*_*esh 6 iphone uitableview ios

我有消息屏幕并实现tableviewcell显示消息的自定义.消息应该是text或者在image某些情况下我需要显示包含信息的框(参见图像发送者​​和接收者).它工作正常,但有时消息视图被切断(见图像信息).我用了很多stackViews来隐藏和显示一些观点.

请在此处找到代码以获得更多理解.

寄件人
接收器
在此输入图像描述

Bha*_*ara 0

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

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

    var currentData: MessageModel?
    
    Run Code Online (Sandbox Code Playgroud)
  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()
    }   
    
    Run Code Online (Sandbox Code Playgroud)
  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
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

尝试一下上面的方法。

除此之外,我还从单元格中删除了 stackView,并通过设置约束来实现所需的 UI。

使用 numberOfLines = 0 进行标签并设置前导、尾随、底部和顶部约束。value = 8(您可以根据需要的边距和间距进行设置。)

尝试并分享结果。