0

由于 iOS 8 Apple 提供了更简单的方法来制作模糊。但是我可以为它的外观设置动画吗?

 CSDTimelineCell* headerCell = (CSDTimelineCell*)[self.timelineTabel cellForRowAtIndexPath:self.headerIndexPath];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *bluredEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
[bluredEffectView setFrame:headerCell.bounds];
[bluredEffectView setHidden: YES];
[headerCell addSubview:(UIView *)bluredEffectView];
[UIView transitionWithView:bluredEffectView
                  duration:3
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    bluredEffectView.hidden = NO;
                } completion:nil];

此类不推荐设置 0 alpha 值。有什么建议么?

4

1 回答 1

1

UIVisualEffectView是 Apple 框架中的一个 hack。它不是重叠层,它通过处理它们完全替换了自身后面的层。将无法更改其alpha.

但是,应该可以使用UIViewAnimationOptionTransitionCrossDissolve过渡,但您必须正确使用它。转换在更改之前拍摄视图的快照,然后在更改之后拍摄视图的快照,然后对差异进行动画处理。您需要为其提供一个包含所有更改的视图:

[UIView transitionWithView:headerCell
                  duration:3
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    bluredEffectView.hidden = NO;
                } completion:nil];

(我还没有测试过,但它可能有效)

于 2015-05-17T10:53:08.660 回答