自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值。 有什么建议吗?
答案 0 :(得分:1)
UIVisualEffectView
是Apple框架中的一个黑客。它不是一个重叠层,它通过处理它完全取代了它背后的层。无法更改其alpha
。
但是,应该可以使用UIViewAnimationOptionTransitionCrossDissolve
转换,但您必须正确使用它。转换在更改之前获取视图的快照,然后在更改后获取视图的快照,然后设置差异的动画。您需要为其提供包含所有更改的视图:
[UIView transitionWithView:headerCell
duration:3
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
bluredEffectView.hidden = NO;
} completion:nil];
(我没有对此进行测试,但可能会有效)