Animation Blocks resets to original position after updating text Animation Blocks resets to original position after updating text ios ios

Animation Blocks resets to original position after updating text


This problem can be caused by having Auto Layout set on the UIView. Strictly speaking, if you're using Auto Layout, then you shouldn't animate the absolute position of objects -- you should animate their constraints instead.

Changing the label text once your animation is underway triggers a layout refresh, and iOS shuffles everything around to comply with the original view constraints. (I suspect this is a behavioural change from iOS7).

Quick fix: un-check Auto Layout on the View, and this should work as expected.


Try this. Put the desired animation in the finish block also.

    - (IBAction)move:(id)sender {    [UIView animateWithDuration:0.4 delay:0.0                     options:UIViewAnimationOptionBeginFromCurrentState                     animations:^{self.myButton.center = CGPointMake(200, 300);                 }completion:^(BOOL finished){         if(finished){                         self.myLabel.text=@"moved"; self.myButton.center = CGPointMake(200, 300);                     }                 }];}