【问题标题】:Adjust the size of UITableView dynamically which would display as a non-scrollable list of content动态调整 UITableView 的大小,显示为不可滚动的内容列表
【发布时间】:2017-08-30 21:52:37
【问题描述】:

我正在使用 Swift 3.0 开发一个项目,它在 UIScrollView 中有一个 UITableView,它已经设置了它的约束。

要求是在这个 UITableView 中显示将从数组返回的歌曲列表,但是这个 UITableView 的大小应该根据数组的大小动态排列,所以我不需要滚动 UITableView,因为我可以看到 UITableView 中的所有歌曲(这个 UITableView 在我的 scrollView 内,所以我可以使用我的 scrollView 在列表中向上或向下移动)。

我将如何实现这一目标?

【问题讨论】:

    标签: ios swift uitableview swift3 uiscrollview


    【解决方案1】:

    你可以根据内容改变tableview的高度。

    var frame = tableView.frame
    frame.size.height = tableView.contentSize.height
    tableView.frame = frame
    

    如果您使用自动布局,则为 tableview 高度创建 outlet,并将 tableview 内容大小分配给它的常量。

    tableviewHeightConstraint.constant = tableview.contentSize.height
    

    【讨论】:

      【解决方案2】:

      1.为tableView创建一个子类并覆盖intrinsicContentSize。

               class MyOwnTableView: UITableView {
              override var intrinsicContentSize: CGSize {
                  self.layoutIfNeeded()
                  return self.contentSize
              }
      
              override var contentSize: CGSize {
                  didSet{
                      self.invalidateIntrinsicContentSize()
                  }
              }
      
              override func reloadData() {
                  super.reloadData()
                  self.invalidateIntrinsicContentSize()
              }
          }
      

      2。在 Interface builder 中,将 tableView 的类更改为 MyOwnTableView(UITableView 的子类)。

      1. 为表格视图设置自动行高。

            tableView.estimatedRowHeight = 60.0
            tableView.rowHeight = UITableViewAutomaticDimension
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-23
        • 2016-12-24
        • 2016-10-02
        • 2019-08-26
        • 1970-01-01
        相关资源
        最近更新 更多