简体   繁体   中英

Make move animation permanent in iOS

I am trying to make a simple application where there are 3 buttons. When user clicks any of the button, they are animated(moved) to their new positions! All this works from this code:

[UIView animateWithDuration:1.2
                  delay:0.1
                options: UIViewAnimationCurveEaseOut
             animations:^
 {
 //Moving the Sum (UIButton which will move through this animation)
 CGRect frame =  Sum.frame;
 frame.origin.y = -20;
 frame.origin.x = (-120);
 Sum.frame = frame;
 .....
....
 }
             completion:^(BOOL finished)
  {
 NSLog(@"Completed");
//adding subview after the animation is complete! newView is an example!
[self.view addSubview:newView];}];

The Problem is that once i add a subview to the main view, All buttons come back to their old position! meaning they weren't moved permanently.. how can i solve this? Plz help guys!

What happens when you add a view? A layout is performed. You could have done two mistakes

  1. You are using autolayout.

    If you are using autolayout, changing frames directly is not advised and a relayout will update the views to their original position using current constraints.

  2. You are setting the frame position in layoutSubviews , viewWillLayout or viewDidLayout .

    Check where you are setting the original position. Can the method be called multiple times?

您已经保存了新框架的X,Y位置,然后通过编码设置了该框架。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM