我已设置动画,如下图所示。 UI按钮从左向右然后从上到下移动。动画正常工作但动画完成后UIButton在segue执行之前就到了原来的位置。所以,它看起来并不好看。我想设定完成动画后UIButton无法在segue之前来到它自己的位置。
这是我尝试使用Image。
//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 ];
图片: -
答案 0 :(得分:0)
如果您没有直接放置给定框架的按钮,那么使用自动布局(自动调整将以相同的效果结束)。您需要显式使用autolayout,保留对约束的引用并更新它们(您可以在此处搜索如何执行此操作),然后设置UIView
动画块[button layoutIfNeeded]
您可以在this answer
中查看有关该答案的详细答案答案 1 :(得分:0)
有一种简单快捷的方法可以与您当前的实施方式配合使用。如果您在动画完成后确切知道视图的位置,则可以执行以下操作:
在UIView animateWithDuration:
中的...在完成块中指定视图的最终变换(位置和方向),即:
completion:^(BOOL finished) {
// Assign views transform and appearance here, for when the animation completes
}
希望有所帮助。