gpt4 book ai didi

ios - 今天扩展 "Show More"按钮第一次不起作用

转载 作者:行者123 更新时间:2023-12-01 15:36:37 28 4
gpt4 key购买 nike

我为我的应用程序开发了 Today Extension。安装并点击“显示更多”按钮后,小部件不会展开(但按钮从“显示更多”变为“更少显示”。再次点击时,“显示更少”变为“显示更多”。小部件大小不会改变,因为它之前没有扩展)。在第一次尝试扩展和收缩小部件之后,“显示更多”按钮工作正常。

我正在使用一个名为“list”的 swift 数组并计算扩展模式下小部件的高度为 list.count * 60因为我希望小部件展开并在其表 View 中准确显示那些多行作为列表中的项目数。

我调试发现preferredContentSize = CGSize(width: maxSize.width, height: list.count * 60)值为 CGSize(width: 359, height: 240) (列表中只有 4 个项目,所以 4*60 = 240)。

当我尝试使用下面的代码片段时,“显示更多”按钮第一次也能正常工作。

if activeDisplayMode == .expanded {
preferredContentSize = maxSize
} else {
preferredContentSize = maxSize
}

但是然后在小部件的表格 View 中有额外的空行,这是我不想要的。

这是负责在我的项目中更改小部件模式的整个功能

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if activeDisplayMode == .expanded {
preferredContentSize = CGSize(width: maxSize.width, height: list.count * 60)
} else {
preferredContentSize = maxSize
}
}

预期的行为是:

第一次点击“显示更多”时,小部件应该展开,并在其表 View 中准确显示这些行作为列表中的项目数。

最佳答案

你可以这样做:

if list.count ?? 0 < 2 {
extensionContext?.widgetLargestAvailableDisplayMode = .compact
} else {
extensionContext?.widgetLargestAvailableDisplayMode = .expanded
if self.extensionContext?.widgetActiveDisplayMode == NCWidgetDisplayMode.expanded {
let acturalExpandHeight = list.count * 60
preferredContentSize = CGSize(width: UIScreen.main.bounds.width, height: acturalExpandHeight)
}
}

当你更新你的列表时,关键是你只能在扩展时设置你喜欢的内容大小,否则当你第一次尝试扩展时会出现一些错误。

关于ios - 今天扩展 "Show More"按钮第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422869/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com