Динамическое изменение размера виджета «Сегодня»

Я внедрил табличное представление в свой виджет «Сегодня». TableView не имеет фиксированного количества ячеек. Из-за этого высота виджета должна динамически изменяться. Кто-нибудь знает, как узнать высоту tableView? Если я знаю высоту tableView, я могу использовать ту же высоту для виджета «Сегодня». Или есть лучшее решение?

Мой код:

var preferredViewHeight:CGFloat{return 132}

override func viewWillAppear(animated: Bool) {

  super.viewWillAppear(animated)
  self.tableView.reloadData()
  updateSize()
}

func updateSize() {

  var preferredSize = self.preferredContentSize
  preferredSize.height = self.preferredViewHeight
  self.preferredContentSize = preferredSize
}

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {

  self.tableView.reloadData()
  completionHandler(NCUpdateResult.NewData)
}

person paro    schedule 12.08.2015    source источник
comment
Вы хотите вычислить общую высоту стола? вы можете добиться этого, используя tableView.contentSize   -  person Or Ron    schedule 12.08.2015
comment
Оно работает. Если вы опубликуете это как ответ, я могу отметить его как правильный.   -  person paro    schedule 14.08.2015


Ответы (2)


вы можете добиться этого, используя tableView.contentSize, это сообщит вам общий размер содержимого таблиц.

person Or Ron    schedule 15.08.2015
comment
Не могли бы вы дать более подробную информацию о том, как использовать tableView.contenSize ? - person AziCode; 08.03.2017

Как было сказано выше, вы бы реализовали это как:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    switch activeDisplayMode {
    case .compact:
        preferredContentSize = CGSize(width: maxSize.width, height: 300)
    case .expanded:
        preferredContentSize = tableView.contentSize
    }
}
person Minhal Khan    schedule 20.08.2018