0

我正在尝试在今天的小部件展开时实现 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,但首先我想先让它工作。

4

1 回答 1

1

iOS 10expandingLabel中,您可以在更改小部件的显示模式时更改 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)
    })
}
于 2017-03-18T04:12:48.973 回答