计算UIView的内容大小?

时间:2016-08-17 14:36:10

标签: ios swift

我有一个UITableView,顶部有一个标题。在此标题中包含动态高度的其他UIViewsUITextViewsUILables

我想知道,如果有一个解决方案来计算此标题的内容高度,那么我可以根据其内容设置其高度。我知道我可以手动计算它,但有时这样的功能可能很舒服。

使用自动布局:

您可以使用本教程http://roadfiresoftware.com/2015/05/how-to-size-a-table-header-view-using-auto-layout-in-interface-builder/

override func viewDidLayoutSubviews() {
   super.viewDidLayoutSubviews()
   sizeHeaderToFit()
}

func sizeHeaderToFit() {
   let headerView = tableView.tableHeaderView!

   headerView.setNeedsLayout()
   headerView.layoutIfNeeded()

   let height = headerView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
   var frame = headerView.frame
   frame.size.height = height
   headerView.frame = frame

   tableView.tableHeaderView = headerView
}

1 个答案:

答案 0 :(得分:4)

使用自动布局:

您可以使用本教程feature request

override func viewDidLayoutSubviews() {
   super.viewDidLayoutSubviews()
   sizeHeaderToFit()
}

func sizeHeaderToFit() {
   let headerView = tableView.tableHeaderView!

   headerView.setNeedsLayout()
   headerView.layoutIfNeeded()

   let height = headerView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
   var frame = headerView.frame
   frame.size.height = height
   headerView.frame = frame

   tableView.tableHeaderView = headerView
}