晚上好!
通过了解今天的扩展,我遇到了很大的问题。我已经阅读了很多教程和介绍,但没有任何帮助我理解这个问题。在iOS 9上,扩展程序运行正常 - 在iOS 10上没有。
我的主要问题是iOS 10中小部件的自动调整大小(?)。在iOS 9上,小部件以纵向和横向完美显示我的桌面视图 - iOS 10崩溃了该组织并打破了视图。关于StackOverflow的问题只有这样的答案:https://stackoverflow.com/a/38009125
但我不会显示一个带有"更多"的按钮。 /"少"。我的扩展程序只应在特定高度显示我的tableView,而不是更多,而不是更少。
我用来测试的今天扩展(我将使用表视图构建一个类似的扩展,如果它有效)是:https://github.com/maximbilan/iOS-Today-Extension-Simple-Tutorial(它不是我的代码 - 我很高兴关于出版商的工作!)
以下是问题的两张图片(1. iOS 9,2。iOS 10):
我不明白这是什么问题。我用self.preferredContentSize.height = 200
设置了高度,但是iOS 10不像iOS 9那样使用那个高度。上面的StackOverflow答案不是解决方案,因为我赢了一个更多/更少的按钮。虽然我使用了更多/更少按钮的代码,但紧凑的尺寸不再存在问题:
// ViewDidLoad
if #available(iOSApplicationExtension 10.0, *) {
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
} else {
self.preferredContentSize.height = 200
}
// method in File
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize
}
else {
self.preferredContentSize = CGSize(width: maxSize.width, height: 200)
}
}
正如我上面所说 - 这段代码仅在小部件被按下时才起作用"显示更多" ...如果未按下按钮且小部件尺寸紧凑,它看起来像上面的图像。
我希望有人可以帮助我,因为这是我长期以来遇到的一个问题,而且我在iOS 10上找不到关于今天小部件的足够资料。
谢谢!
答案 0 :(得分:6)
是的我有同样的问题。我用widgetActiveDisplayModeDidChange解决了它,我在viewDidLoad中调用它 Swift 3
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
self.preferredContentSize = (activeDisplayMode == .expanded) ? CGSize(width: 500, height: 230) : CGSize(width: maxSize.width, height: 110)
}
override func viewDidLoad() {
super.viewDidLoad()
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
widgetActiveDisplayModeDidChange(.compact, withMaximumSize: CGSize(width: 500, height: 230))
}
答案 1 :(得分:3)
这是今天扩展的iOS 10行为。它需要一个固定的高度,对于所有小部件都是相同的,如果你想显示更多,你必须有更多的按钮。您还可以设置窗口小部件的默认显示(扩展或紧凑):https://developer.apple.com/reference/notificationcenter/ncwidgetdisplaymode