动画中的多个 UIView

Posted

技术标签:

【中文标题】动画中的多个 UIView【英文标题】:Multiple UIViews in animation 【发布时间】:2013-10-08 15:58:31 【问题描述】:

当用户按下前进或后退按钮时,我正在尝试为我的视图创建一种滑出滑入动作。 我把第一个视图滑出就好了,但是第二个就不会滑进去了。

这是我的代码:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelay:0.1];
[UIView setAnimationDuration:0.7];

UIView *currentView = [[contentScrollView subviews] objectAtIndex:0];
currentView.center = CGPointMake(contentScrollView.frame.size.width+contentScrollView.frame.size.width/2, currentView.center.y);

UIView *newView = [[contentScrollView subviews] objectAtIndex:1];
newView.center = CGPointMake(newView.center.x+newView.frame.size.width, newView.center.y);

[UIView commitAnimations];

我真的不明白问题出在哪里,它应该可以工作。但是 currentView 只是滑出,而 newView 仍然在 -x 值中,对用户隐藏。

我已经尝试更改为转换,但没有任何作用。

这是什么原因造成的?

【问题讨论】:

您是否尝试登录newView.center.x + newView.frame.size.width?它有正确的价值吗? 您希望这是同时进行的吗? 我希望它们同时发生,是的。同时滑出和滑入。就像在仪表板中更改页面时一样。我输入什么 X 值并不重要,它只是不动。 【参考方案1】:

试试这个代码(经过测试): 复制并粘贴它以查看它的实际效果,并根据您的需要调整视图的框架。

UIView *viewOne = [[UIView alloc] initWithFrame:(CGRect)0, 0, 200, 200]; //currentView
UIView *viewTwo = [[UIView alloc] initWithFrame:(CGRect)200, 0, 200, 200]; //newView
viewOne.backgroundColor = [UIColor lightGrayColor];
viewTwo.backgroundColor = [UIColor darkGrayColor];
[self addSubview:viewOne];
[self addSubview:viewTwo];

[UIView animateWithDuration:5.0f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^
 
     viewOne.frame = (CGRect)300, 0, 200, 200;
     viewTwo.frame = (CGRect)-100, 0, 200, 200;

  completion:^(BOOL finished) 


 ];

这是向您展示这两个视图如何滑入和滑出。 您必须根据需要调整视图的框架。

【讨论】:

这似乎可行,我将尝试按照我需要的方式将其实现到代码中。我稍后会回来回答,但谢谢! :-) 如果有帮助,请将其标记为正确答案。如果您需要更多帮助,请随时回帖。

以上是关于动画中的多个 UIView的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 在单个 UIView 上同时进行多个动画

在 UIView 中为多个形状设置动画

多个 UIView 的动画与 UIBezierPath

使用 CoreAnimation 一次为多个 UIView 设置动画

单个 UIView 上的多个同时 UIViewAnimations

调用多个动画,一个接一个相同的UIView对象,不使用补全