我正试图将2个观点一起移动:
[UIView animateWithDuration:0.5
animations:^{
[currentView setCenter:CGPointMake(currentView.center.x + currentView.frame.size.width, currentView.center.y)];
[nextView setCenter:CGPointMake(nextView.center.x + nextView.frame.size.width, nextView.center.y)];
}];
然而,我无法做到这一点。只有nextView正在移动。
如果我只在一个上提交动画,它就可以正常工作。
可能是什么原因? 可能是因为我的宣言:
nextView = [[UIView alloc] initWithFrame:currentView.frame];
答案 0 :(得分:0)
如果我读到这个正确,你有两个完全相同的视图,以完全相同的方式动画。可能是他们都在移动但是一个在另一个之上,所以你只看到顶视图?
答案 1 :(得分:0)
我尝试过这段代码:
CGRect currentFrame = currentView.frame;
currentFrame.origin.x = currentFrame.size.width;
CGRect nextFrame = nextView.frame;
nextFrame.origin.x = 0;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.4];
[currentView setFrame:currentFrame];
[nextView setFrame:nextFrame];
[UIView commitAnimations];
但它具有相同的效果:仅当动画是唯一要动画的视图时才在“currentView”上执行动画。 (没有行[nextView setFrame:nextFrame];)
使用断点,我在提交动画后打印了我对视图的描述:
Printing description of self->currentView:
<UIView: 0x1dd67ab0; frame = (320 0; 320 416); autoresize = W+H; animations = { position=<CABasicAnimation: 0x1de35a40>; }; layer = <CALayer: 0x1de61380>>
Printing description of self->nextView:
<UIView: 0x1dde57e0; frame = (0 0; 320 416); animations = { position=<CABasicAnimation: 0x1de35a80>; }; layer = <CALayer: 0x1dd12520>>
我的当前视图会出现在屏幕右侧,但它没有。
答案 2 :(得分:0)
我找到了解决问题的方法。
我的两个观点之间的主要区别在于,一个是从.xib创建的,另一个是以编程方式创建的。 一切都在写:
[currentView setTranslatesAutoresizingMaskIntoConstraints:YES];
因此.xib文件中有更改的内容,因此我不必以编程方式设置此掩码。