通过将iOS 9今天的扩展转换为iOS 10来解决尺寸问题

时间:2016-10-08 20:16:25

标签: ios swift ios10 today-extension sizing

晚上好!

通过了解今天的扩展,我遇到了很大的问题。我已经阅读了很多教程和介绍,但没有任何帮助我理解这个问题。在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):

iOS 9: work

iOS 10: bug

我不明白这是什么问题。我用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上找不到关于今天小部件的足够资料。

谢谢!

2 个答案:

答案 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))

}

enter image description here enter image description here

答案 1 :(得分:3)

这是今天扩展的iOS 10行为。它需要一个固定的高度,对于所有小部件都是相同的,如果你想显示更多,你必须有更多的按钮。您还可以设置窗口小部件的默认显示(扩展或紧凑):https://developer.apple.com/reference/notificationcenter/ncwidgetdisplaymode