今天Widget扩展动画在iOS 10上无法运行

时间:2016-11-02 01:25:18

标签: ios objective-c today-extension ios10-today-widget

我试图在今天的小部件扩展时尝试实现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像素。因此,在故事板中,我将所有&#34;额外的&#34;信息低于100像素。这是正确的方法吗?或者,还有更好的方法。我最终会把它带到iOS 8和iOS 9,但首先我想先让它工作。

1 个答案:

答案 0 :(得分:1)

iOS 10 中,每当窗口小部件的显示模式发生变化时,您都可以更改expandingLabel的字母。即,当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)
    })
}