小部件,iOS 10,Xcode 7和大小

随着iOS 8的发布,Apple引入了Widgets 。 在iOS 9上,变化不大,我们所有应用程序的Widget使用率仍然很低。 iOS 10的推出Apple尝试将Widgets放在更多的焦点。

最大的更改之一(并且可能会破坏所有小部件的更改)之一是, 小部件现在可以具有两种模式: 紧凑扩展

紧凑模式的固定高度为110px(据我所知 ),对于扩展模式,您可以像以前一样设置自己的首选高度。

苹果选择默认情况下实施紧凑模式 (我个人认为这是一个糟糕的选择,因为开发高度超过110像素的所有小部件都被切断了)。

另外,由于Xcode 8仍处于测试版,并且Apple不接受使用Beta版制作的版本,因此您还不能正式修复此问题。

那么该怎么办? 好了,我们可以尝试解决此问题:调用函数,设置属性并查看在iOS 10上会发生什么。

为此,我们首先创建了一个枚举“复制” Apple NCWidgetDisplayMode

根窗口小部件视图控制器中,我们添加了一些方法,使我们可以“公开”新的枚举。 对于iOS 9及以下版本,我们回退到扩展模式,因为该模式的行为等同于当前的小部件行为。

这段代码本身并不能解决我们的问题。 我们的小部件保持紧凑模式。 它只允许我们为iOS 10进行“准备”并迁移到Swift 3.0。

为了使小部件进入扩展 模式, iOS需要再按一次(以下代码放置在loadView方法中)。

我们使用此代码构建了我们的应用,并将其提交给TestFlight,以便我们可以在iOS 10设备上运行它。 而且有效! Widget并非处于预期的100%状态,而是处于展开模式,但未显示少显示按钮。 这对我们来说不是损失,因为我们只使用了扩展模式

短时间内,我们尝试通过在根窗口小部件视图控制器中实现以下方法来解决此问题:

但这并没有改变。 之后,我们停止了,因为我们已经实现了想要的目标。

通过这种方式,我们的应用仍支持iOS 7(与Xcode 8不同),同时为我们的iOS 10用户提供了最佳体验。

注意:这仅适用于iPad,iPhone将默认返回紧凑模式。