【问题标题】:Can i animate alpha of UIBlurEffectView?我可以为 UIBlurEffectView 的 alpha 设置动画吗?
【发布时间】:2015-05-17 08:11:34
【问题描述】:

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

【问题讨论】:

    标签: objective-c ios8 uiblureffect


    【解决方案1】:

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

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

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

    (我没有对此进行测试,但它可能会起作用)

    【讨论】:

    • 它有效,但有时应用程序往往会在控制台没有警报的情况下崩溃
    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多