Изменить высоту заголовка таблицы внутри коллекции - PullRequest
1 голос
/ 16 марта 2020

Как я могу сделать размер заголовка UITableView внутри UICollectionView Dynami c. Я использовал этот код раньше для создания UITableView динамического заголовка c внутри UIViewController

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

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

       headerView.setNeedsLayout()
       headerView.layoutIfNeeded()

       let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
       var frame = headerView.frame
       frame.size.height = height
       headerView.frame = frame

       questionTableView.tableHeaderView = headerView
   }

Но не могу использовать этот код внутри UICollectionViewCell класса. В нем говорится, что «UICollectionViewCell» не имеет члена viewDidLayoutSubviews.

Так как я могу сделать динамический c высоту заголовка tableView внутри collectionView. Я перетащил UIView вверху (для заголовка) в UITableView в раскадровке

1 Ответ

1 голос
/ 17 марта 2020

Самое важное сообщение - вам нужно вызвать все делегаты и метод источника данных UITableViewController в файле UICollectionViewCell.swift.

  var intDynamicHeight = CGFloat()

  func sizeHeaderToFit() -> CGFloat
  {
   let headerView = questionTableView.tableHeaderView!

   //headerView.setNeedsLayout()
   //headerView.layoutIfNeeded()

   let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height

   self.intDynamicHeight = height
  // var frame = headerView.frame
  // frame.size.height = height
  // headerView.frame = frame

  // questionTableView.tableHeaderView = headerView

  return height
}


  func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 
{
    return self.sizeHeaderToFit()
}


func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
        let headerView = questionTableView.tableHeaderView!
        let viewNewIN = UIView.init(frame: CGRect(x: 0, y: 0, width: <Your desire Width>, height: self.intDynamicHeight))
        headerView.isHidden = false
       var frame = headerView.frame
       frame.size.height = height
       headerView.frame = frame

       viewNewIN.addSubview(headerView)

       return viewNewIN
}

И скрыть представление заголовка на начальном этапе, чем отображение в методе viewForHeaderInSection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...