2014-11-26 14 views
10

Sto riscontrando un problema nell'espansione e nella contrazione di UIEffectView. Si espande bene, ma quando si contrae istantaneamente scatta alla sua altezza finale e scivola in posizione, lasciando dietro di sé un debole effetto di vibrazione nella sua scia. Ecco una gif per illustrare il problema. http://i.imgur.com/Lh8q7m1.gifUIVisualEffectView bug di animazione del vincolo di sfocatura

project layout

Questo accade in una nuova configurazione di progetto vuoto come così: project layout

Ecco il codice di animazione:

- (IBAction)toggleEffects:(id)sender { 
[self.view setNeedsLayout]; 

if(self._effectsHeight.constant == 50){ 
    self._effectsHeight.constant = 500; 
}else{ 
    self._effectsHeight.constant = 50; 
} 
[UIView animateWithDuration:1.5f 
       animations:^{ 
        [self.view layoutIfNeeded]; 
       }]; 

}

+0

Sto vedendo la stessa identica cosa. Sembra un insetto per me. Ho presentato un bug con Apple Bug Reporter, n. # 19187042 –

+0

Sono stato in grado di risolverlo aggiungendo la vista effetti come sottoview di una vista di mascheramento. La vista degli effetti è impostata con l'altezza completa che intendete per l'animazione e si anima l'altezza della vista di mascheramento per rivelare la vista degli effetti sottostante. –

+0

È possibile aggiungere un bordo attorno alla vista per esaminarne la cornice e postare un'altra GIF? – wczekalski

risposta

2

penso che tu devi impostare il codice di ridimensionamento all'interno del blocco di animazione . Prova in questo modo:

[UIView animateWithDuration:1.5f 
       animations:^{ 
        if(self._effectsHeight.constant == 50){ 
         self._effectsHeight.constant = 500; 
        }else{ 
         self._effectsHeight.constant = 50; 
          } 
       }]; 
+0

wow, che in effetti risolve il problema .. grazie –

+0

Non ha funzionato per me :(E dovresti chiamare [self.view layoutIfNeeded]; nel blocco di animazione – surfrider