动态调整今天的小部件
Dynamic resizing today widget
我在今天的小部件中实现了 table 视图。 table视图没有固定数量的单元格。因此,小部件的高度必须动态变化。有人知道如何找出 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)
}
您可以通过使用 tableView.contentSize
来实现,这将告诉您表格内容的总大小。
如上所述,您可以将其实现为:
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
switch activeDisplayMode {
case .compact:
preferredContentSize = CGSize(width: maxSize.width, height: 300)
case .expanded:
preferredContentSize = tableView.contentSize
}
}
我在今天的小部件中实现了 table 视图。 table视图没有固定数量的单元格。因此,小部件的高度必须动态变化。有人知道如何找出 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)
}
您可以通过使用 tableView.contentSize
来实现,这将告诉您表格内容的总大小。
如上所述,您可以将其实现为:
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
switch activeDisplayMode {
case .compact:
preferredContentSize = CGSize(width: maxSize.width, height: 300)
case .expanded:
preferredContentSize = tableView.contentSize
}
}