我能为UIBlurEffectView的alpha动画吗?

时间:2015-05-17 08:11:35

标签: objective-c ios8 uiblureffect

自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值。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

UIVisualEffectView是Apple框架中的一个黑客。它不是一个重叠层,它通过处理它完全取代了它背后的层。无法更改其alpha

但是,应该可以使用UIViewAnimationOptionTransitionCrossDissolve转换,但您必须正确使用它。转换在更改之前获取视图的快照,然后在更改后获取视图的快照,然后设置差异的动画。您需要为其提供包含所有更改的视图:

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

(我没有对此进行测试,但可能会有效)