ios - 在 Swift 4 中根据 Table View 高度动态调整布局

标签 ios swift uitableview

我有一个包含表格 View 、 ImageView 和许多标签的 ScrollView 。这是控件的示例位置:

  • ImageView 1
  • 表格 View
  • 标签 1
  • 标签 2
  • 标签 3
  • 标签 4
  • ImageView 2

表格是不可滚动的。我设法根据行数改变了它的高度。这是我在创建单元格后使用的代码:

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

但是,当Table view高度调整时,其他控件(Label1、Label2、Label3、Label4和Image View2)的位置没有调整。他们重叠了。表格 View 高度调整时如何自动调整其他控件的位置?

更新: View Controller 代码:

class MyViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
    @IBOutlet weak var _Label1: UILabel!
    @IBOutlet weak var _Label2: UILabel!
    @IBOutlet weak var _Label3: UILabel!
    @IBOutlet weak var _Label4: UILabel!
    @IBOutlet weak var _Label5: UILabel!

    @IBOutlet weak var _TableViewItems: UITableView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        // this will remove the extra empty cell divider lines
        _TableViewItems.tableFooterView = UIView()

        _TableViewItems.delegate = self
        _TableViewItems.dataSource = self

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return items.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "sampleId") as! Sample
        let row = indexPath.row

        var frame = _TableViewItems.frame

        cell ._LabelNext.text = "Sample Text"

        frame.size.height = _TableViewItems.contentSize.height
        _TableViewItems.frame = frame

        return cell
    }

    override func viewWillLayoutSubviews()
    {
        super.viewWillLayoutSubviews()
        tableViewHeightConstraint.constant = _TableViewItems.contentSize.height // <------ unresolved tableViewHeightConstraint
    }
}

最佳答案

不确定你在哪里添加了提到的代码

但是,使用约束(自动布局)并添加以下代码将解决您的问题。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    tableViewHeightConstraint.constant = tableView.contentSize.height
}

关于ios - 在 Swift 4 中根据 Table View 高度动态调整布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091829/

相关文章:

ios - 滑动以删除嵌入在 UIScrollView 中的 UITableView

ios - 火力地堡 + swift : Bypass User Login Screen

ios - NSNotificationCenter 不会在 Swift 中发送消息

ios - 如何在tableview cell ios objective c中实现页面控制

ios - 获取 UITableViewCellAccessoryDe​​tailButton 的框架(为 nil)

ios - 如何将特定的 UITableView 行发送到特定的 ViewController?

ios - 核心数据属性类型差异

ios - 未捕获的异常 : This class is not key value coding-compliant

ViewController 扩展中的 Swift @IBActions

swift - 存档和导出后并发线程未同时运行