2012-03-27 7 views
1

Ich habe einen einfachen UIView Animationsblock. Im Block ändere ich nur das Alpha der Ansicht, aber der Rahmen der Ansicht wird auch animiert! WTF?UIView Animation animiert mehr Eigenschaften als ich es gefragt habe

Hier ist mein Code:

UIButton *button = [flowerViews objectAtIndex:index]; 
UIImageView *newGlowView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"grid_glow.png"]]; 
newGlowView.frame = CGRectMake(0, 0, 130, 130); 
newGlowView.center = button.center; 
newGlowView.alpha = 0.0; 
[scrollView_ addSubview:newGlowView]; 
[scrollView_ sendSubviewToBack:newGlowView]; 
[UIView animateWithDuration:0.3 animations:^{ 
    newGlowView.alpha = 1.0; 
}]; 

Wie Sie sehen, ich bin eine neue Ansicht erstellen und zu scrollView_ hinzufügen. Ich setze Position und Alpha der Ansicht, bevor ich sie zu scrollView_ hinzufüge. Sobald es hinzugefügt wird, habe ich einen Animationsblock, um das Alpha der Ansicht von 0 bis 1 zu animieren.

Das Problem ist, die Position der Ansicht wird auch animiert! Wenn es eingeblendet wird, sieht es so aus, als würde es von einem ursprünglichen Frame von CGRectZero zu dem animieren, den ich ihm zugewiesen habe.

Offenbar sollten nur die Eigenschaften innerhalb des Animationsblocks animiert werden, richtig? Ist das ein Fehler? Fehle ich etwas?

Danke!

+0

Wird das Ganze aus einem Animationsblock oder innerhalb eines Ereignisses aufgerufen, das sich innerhalb eines Animationsblocks befindet, wie die Delegate-Methoden des Autorotate-View-Controllers. – mattjgalloway

+0

Ja ist es. Kannst du das als Antwort posten, damit ich es akzeptieren kann? Ich habe das gerade selbst herausgefunden (duh) – CharlieMezak

+0

Fertig! Freut mich, dass du es gelöst hast. – mattjgalloway

Antwort

1

Vielleicht wird die ganze Sache von einem Animationsblock oder vielleicht innerhalb eines Ereignisses aufgerufen, das innerhalb eines Animationsblocks liegt, wie die Autorotate View Controller Delegate Methoden.

+0

Das ist es! Die Methode, die den Code in meiner Frage enthält, wird normalerweise nicht aus einem Animationsblock aufgerufen, aber in diesem Fall war es das. Wie dumm von mir. Ich werde Ihre Antwort akzeptieren, sobald der Zeitgrenzwert erreicht ist. – CharlieMezak