Today Widget Extension 动画在 iOS 10 上不起作用

Posted

技术标签:

【中文标题】Today Widget Extension 动画在 iOS 10 上不起作用【英文标题】:Today Widget Extension animation doesn't work on iOS 10 【发布时间】:2016-11-02 01:25:17 【问题描述】:

我正在尝试在今天的小部件展开时实现 alpha 更改,以便显示数据,但我似乎根本无法让它动画化。我正在模拟器上尝试这个。相反,它只是出现,根本没有动画。

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)

        (self.expandingLabel.alpha == 1) ? (self.expandingLabel.alpha = 0) : (self.expandingLabel.alpha = 1);

     completion:Nil];



看不到我做错了什么。这个方法在 ios 8/9 中还能用吗?

另外一个我担心的是,我只想在小部件展开时显示附加数据。我处理这个问题的方式是,在 iOS 10 上,我已经确定关闭时小部件的最小高度约为 100 像素。所以在情节提要中,我将所有“额外”信息放在 100 像素以下。这是正确的方法吗?或者,还有更好的方法。我最终会将它带到 iOS 8 和 iOS 9,但首先我想先让它工作。

【问题讨论】:

【参考方案1】:

iOS 10 中,您可以在更改小部件的显示模式时更改 expandingLabel 的 alpha。即当widgetActiveDisplayModeDidChange 被调用时。

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize)

    if activeDisplayMode == .expanded
    
        preferredContentSize = CGSize(width: 0.0, height: 200.0) //Size of the widget you want to show in expanded mode
    
    else
    
        preferredContentSize = maxSize
    
    UIView.animate(withDuration: 0.5, animations: 
        (self.expandingLabel.alpha == 1) ? (self.expandingLabel.alpha = 0) : (self.expandingLabel.alpha = 1)
    )

【讨论】:

以上是关于Today Widget Extension 动画在 iOS 10 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发------Widget(Today Extension)插件化开发

Today Widget Extension 中经常出现“无法加载”

Today Extension Widget 内容更新

Dose NSTimer 可以在 Today Extension (Widget) 中使用吗?

在 iOS 8 Today Extension 中从 Storyboard 加载特定的 ViewController

在我的应用程序中从我的 Today Extension(小部件)打开 Safari