我在设置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];
当我为superview设置动画以使其增长时,视觉效果会跟随superview的动画,但是当我想减少它时,视觉效果会立即消失,使得结果非常难看^^ 这是我为superview设置动画的代码(这里称为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)
答案 0 :(得分: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;
}];