IOS停止按钮,在动画完成后占据自己的位置

IOS停止按钮,在动画完成后占据自己的位置,ios,objective-c,uibutton,uianimation,Ios,Objective C,Uibutton,Uianimation,我已经设置了如下图所示的动画。其中UIbutton从左到右,然后从上到下移动。动画工作正常,但动画完成后,在继续执行之前,按钮会回到其原始位置。所以,看起来不太好。我想设定动画完成后,UIButton不能在segue之前到达自己的位置 这是我对图像的尝试 //Move button Left to Right - (IBAction)btnEasy:(id)sender { Easy=YES; NSLog(@"your x is: %f ", self.btnEasy.frame.orig

我已经设置了如下图所示的动画。其中UIbutton从左到右,然后从上到下移动。动画工作正常,但动画完成后,在继续执行之前,按钮会回到其原始位置。所以,看起来不太好。我想设定动画完成后,UIButton不能在segue之前到达自己的位置

这是我对图像的尝试

   //Move button Left to Right
- (IBAction)btnEasy:(id)sender {
Easy=YES;
NSLog(@"your x is: %f ", self.btnEasy.frame.origin.x);
NSLog(@"your y is: %f ", self.btnEasy.frame.origin.y);

x1=self.btnEasy.frame.origin.x;
y1=self.btnEasy.frame.origin.y;

CGRect screenRect = [[UIScreen mainScreen] bounds];
[UIView animateWithDuration:1.150 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            self.btnEasy.frame = CGRectMake(screenRect.size.width/1.80, self.btnEasy.frame.origin.y, self.btnEasy.frame.size.width, self.btnEasy.frame.size.height);

    [self performSelector:@selector(btneasyanimation) withObject:self afterDelay:1.160 ];}
                      completion:^(BOOL finished) {

                      }];

  //Move Button top to Bottom

    if (Easy==YES) {
        if (isiPad2 || isiPadAir || isiPadRatina) {
          //[self.view layoutIfNeeded];
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationBeginsFromCurrentState:YES];
                [UIView setAnimationDuration:1.0];
                [_btnEasy setFrame:CGRectMake(self.view.frame.origin.x+290, self.view.frame.origin.y+900, self.btnEasy.frame.size.width, self.btnEasy.frame.size.height)];
                [UIView commitAnimations];


        }
     else   if (isiPhone4s) {

            [UIView beginAnimations:nil context:NULL];
            [UIView setAnimationBeginsFromCurrentState:YES];
            [UIView setAnimationDuration:1.0];
            [_btnEasy setFrame:CGRectMake(self.view.frame.origin.x+92, self.view.frame.origin.y+428, self.btnEasy.frame.size.width, self.btnEasy.frame.size.height)];
            [UIView commitAnimations];


        }
    }
  [self performSelector:@selector(segueeMethod) withObject:self afterDelay:1.160 ];
图像:-


如果不直接放置按钮,则使用自动布局(自动调整大小将以相同效果结束)。您需要明确使用autolayout,保留对约束的引用并更新它们(您可以在此处搜索如何进行更新),然后设置
UIView
动画块
[按钮布局需要]


您可以在

中看到关于它的详细答案。有一种简单快捷的方法可以用于当前的实现。如果您知道动画完成后视图的确切位置,则可以执行以下操作:

ui查看动画时长:
。。。指定完成块中视图的最终变换(位置和方向),即:

completion:^(BOOL finished) {
// Assign views transform and appearance here, for when the animation completes
}

希望对您有所帮助。

您是否正在使用Autolayout放置按钮?如果是这种情况,如果移动帧,则动画完成后按钮将转到上一个位置。是。我有两个ipad和iphone的故事板。在iphone中我使用了自动调整大小,在ipad中我使用了自动布局。但在这两个故事板中都有相同的问题。