Test sous iOS 8.0 actuellement. Je fais face à un bug étrange (peut-être) avec UIVisualEffectView.UIVisualEffectView setHidden = YES extrêmement lent - bug bizarre?
-je ajouter la vue au-dessus du point de vue du contrôleur toute vue en tant que tel:
-(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;
}
}
Au-dessus est tout beau et je vois une vue floue au-dessus de toute la vue. Cependant, quand je dois cacher toute vue de flou en tant que tel:
-(void)hideBlur{
NSLog(@"This gets printed before hidden: %@",[NSDate date]);
self.blurview.hidden=YES;
NSLog(@"This gets printed after hidden: %@",[NSDate date]);
}
Certains comment les 3 lignes de code sont exécutées, mais mon point de vue flou est encore visible. Si j'attends environ 5-10 secondes, la vue du flou disparaît. Notez également que même si la vue de flou est "visible" (bien qu'elle devrait être cachée maintenant), je suis en quelque sorte encore capable d'interagir avec les vues qui sont sous la vue de flou. Je vois leurs contours flous bouger et des choses quand j'interagis avec eux. Mais la vue du flou prend 5-10 secondes pour disparaître.
J'ai testé avec des instructions NSLog et des points de rupture et je vois que le ".hidden" est appelé avec succès dans le temps mais la vue reste visible pendant 5-10 secondes.
impressions PRÉCÉDENTES:
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
Est-ce une sorte de bug ??
Édition 2: J'avais initialement testé avec la vue d'effet visuel étant la vue elle-même au lieu de l'ajouter comme une sous-vue d'un autre UIView. Même problème là aussi.
Paul Hegarty enseigne dans ses excellentes conférences de Stanford iTunes U que tout le code d'interface utilisateur doit se produire sur la file d'attente principale. – andrewbuilder
oui convenu, était mon erreur –