3

我在为 VisualEffetView 设置动画时遇到问题。这是我声明它的代码。

UIBlurEffect* blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
effectView = [[UIVisualEffectView alloc] initWithEffect:blur];
effectView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
effectView.frame = self.bounds;
self.layer.borderWidth = 1;
[self addSubview:effectView];

当我为超级视图设置动画以使其增长时,视觉效果会跟随超级视图的动画,但是当我想缩小它时,视觉效果会立即消失,使结果非常难看^^这是我为超级视图设置动画的代码(这里叫recherche)

[UIView animateWithDuration:0.3f
                          delay:0.0f
                        options:UIViewAnimationOptionTransitionNone
                     animations:^{
                         CGRect f = recherche.frame;
                         f.size.height = 0;
                         [recherche setFrame:f];
                     }
                     completion:^(BOOL finished){
                         [recherche removeFromSuperview];
                         recherche = nil;
                     }];

当我让recherche消失时,这就是我所拥有的。白色方块似乎是效果视图,因为如果我更改 UIBlurEffectStyle,颜色会发生变化。但模糊效果缺失 x) 截屏

4

1 回答 1

0

从上面的理解,我发现你只需要重置效果视图的高度就可以达到你想要的效果。

在动画块中添加代码:

检查并告诉我,它是否完全满足您的期望。

[UIView animateWithDuration:0.3f
                      delay:0.0f
                    options:UIViewAnimationOptionTransitionNone
                 animations:^{
     CGRect f = recherche.frame;
     f.size.height = 0;
     [recherche setFrame:f];

     // Add this lines
     CGRect effectViewFrame = effectView.frame;
     effectView.size.height = 0;
     effectView.frame = effectViewFrame;

 }
 completion:^(BOOL finished){
     [recherche removeFromSuperview];
     recherche = nil;
 }];
于 2014-12-15T12:44:49.890 回答