【问题标题】:UITableview cell cut off some messages(views)UITableview 单元格切断了一些消息(视图)
【发布时间】:2019-01-25 05:50:07
【问题描述】:

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

更多了解请联系code here



【问题讨论】:

  • 我们将不胜感激。
  • 你能分享一个屏幕截图来自viewdebugHierarchy当你点击被切断的文本字段时?我想要一张像我拍的here 的截图。我想查看截止视图的 约束(在我的图像中位于右侧)。除此之外,如果您发布您的问题,并附上您为 xib 中的单元格设置的约束/框架的更多相关屏幕截图以及您在代码中设置的约束的代码,那会更好。这将使我们更容易提供帮助。
  • 你试过了吗?
  • @Honey。还没有,今天分享给大家。谢谢:)

标签: ios iphone uitableview


【解决方案1】:

使用 UI 调试器,看看到底发生了什么。

【讨论】:

    【解决方案2】:

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

    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 的标签并设置前导、尾随、底部和顶部约束。 with value = 8(您可以根据需要设置边距和间距。)

    尝试并分享结果。

    【讨论】:

    • 我在单元格中使用堆栈视图管理collection viewButtons Viewdisplay some information,当没有连接时它显示no connection yet 视图,其他视图显示集合。您在使用statckview 时是否遇到过同样的问题?
    • 首先,您应该尝试注释所有单元格中与图层相关的代码,然后在 iPhone 上快速上下滚动单元格,以检查您是否观察到单元格的任何切割。稍后,您可以进行stackView相关的修改。就我而言,是的,我观察到同样的细胞切割。因此,我首先删除了 stackView,通过设置适当的约束来使用布局,然后在这两种方法中添加与图层相关的代码,从而解决了问题。但是,您应该首先检查层,然后移动到 stackView 以确定可能的原因。
    • @ilesh 有帮助吗?你能解决这个问题吗?
    猜你喜欢
    • 2015-01-08
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多