【问题标题】:UIStackView zero height although I have content in itUIStackView 零高度虽然我有内容
【发布时间】:2017-01-06 16:01:24
【问题描述】:

我在 UITableViewCell 中有 UIStackView 并在其中有四个长文本标签。 在第一次加载时,我只在单元格中显示第一个高度为 44 的标签,并隐藏其他三个标签,StackView 正确显示。然后,当我点击 tableViewCell 时,我需要展开单元格并显示其他三个标签。我向他们展示并重新加载 TableView,但在那之后我的 StackView 的高度为零,并且所有四个标签的高度也都为零。我只在 IOS 10.1 中遇到了这个问题,当我使用带有短文本 StackView 的标签时效果很好。

这是我的代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var cell  = tableView.cellForRowAtIndexPath(indexPath) as! AboutUsTableViewCell
    cell.firstLabel.hidden = isExpanded
    cell.secondLabel.hidden = isExpanded
    cell.thirdLabel.hidden = isExpanded
    isExpanded = !isExpanded
    tableView.reloadData()
}

谢谢大家!

【问题讨论】:

    标签: ios swift uitableview uistackview


    【解决方案1】:

    您应该在更改isHidden 属性后更新表。这应该可以解决问题。

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        var cell  = tableView.cellForRowAtIndexPath(indexPath) as! AboutUsTableViewCell
        cell.firstLabel.hidden = isExpanded
        cell.secondLabel.hidden = isExpanded
        cell.thirdLabel.hidden = isExpanded
        isExpanded = !isExpanded
        tableView.beginUpdates()
        tableView.endUpdates()
    }
    

    另外,检查this articleUITableView 单元格中使用UIStackView

    【讨论】:

      【解决方案2】:

      将 Labels 的行数设置为 0,并将以下代码添加到 viewDidLoad 方法中。

      self.tableView.estimatedRowHeight = 44.0 //or cell height
      self.tableView.rowHeight = UITableViewAutomaticDimension
      

      【讨论】:

      • 我已经设置了 UITableViewAutomaticDimension 并且我所有的标签都有 0 行数。正如我所说,everythink 非常适合 IOS 9 和 IOS 10.2 。我只有 IOS 10.1 有问题
      猜你喜欢
      • 2019-01-26
      • 1970-01-01
      • 2019-06-16
      • 2016-07-15
      • 1970-01-01
      • 2015-12-15
      • 2018-11-19
      • 2020-07-16
      相关资源
      最近更新 更多