目前在iOS 8.0中进行了测试。
我正面临UIVisualEffectView的一个奇怪的错误(可能)。
我将视图添加到整个视图控制器视图的顶部,如下所示:
-(void)showBlur{
if (!self.blurview) {
self.blurview = [[UIView alloc] initWithFrame:self.view.frame];
UIVisualEffect *blurEffect2;
blurEffect2 = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView * visualEffectView2 = [[UIVisualEffectView alloc] initWithEffect:blurEffect2];
visualEffectView2.frame = self.view.frame;
[self.blurview addSubview:visualEffectView2];
[self.view addSubview:self.blurview];
} else {
self.blurview.hidden=NO;
}
}上面的一切都很好,我在整个视图的顶部看到了模糊的景色。但是,当我需要隐藏整个模糊视图时:
-(void)hideBlur{
NSLog(@"This gets printed before hidden: %@",[NSDate date]);
self.blurview.hidden=YES;
NSLog(@"This gets printed after hidden: %@",[NSDate date]);
}一些如何执行所有3行代码,但我的模糊视图仍然可见。如果我等5到10秒左右,模糊视图就消失了。还请注意,即使模糊视图是“可见的”(尽管它现在应该被隐藏),我仍然能够与模糊视图下的视图交互。当我和他们互动时,我看到他们模糊的轮廓,移动和其他东西。但是模糊的画面需要5-10秒才能消失。
我用NSLog语句和断点进行了测试,看到".hidden“确实在时间上被成功地调用了,但是视图在5-10秒内是可见的。
以上打印出来:
2015-09-09 00:55:21.542 Kitty[8600:1094199] This gets printed before hidden: 2015-09-09 04:55:21 +0000
2015-09-09 00:55:21.543 Kitty[8600:1094199] This gets printed after hidden: 2015-09-09 04:55:21 +0000这是什么虫子吗??
编辑2:我最初测试的是视觉效果视图本身,而不是将其添加为另一个UIView的子视图。同样的问题也存在。
发布于 2015-09-12 04:43:02
我自己解决了这个问题。最初,我是从主队列以外的另一个dispatch_async队列调用dispatch_async方法的。我通过将UI更新部分放在主队列中来解决这个问题,如下所示:
-(void)hideBlur{
NSLog(@"This gets printed before hidden: %@",[NSDate date]);
dispatch_async(dispatch_get_main_queue(),^{
self.blurview.hidden=YES;
});
NSLog(@"This gets printed after hidden: %@",[NSDate date]);
}https://stackoverflow.com/questions/32471247
复制相似问题