我想将图像从屏幕的一侧移动到另一侧。
我有两个 UIImageViews,ball1 和 ball2。一个在左边,一个在右边。设备处于横向模式。当用户单击按钮时,我希望他们切换侧面,就像补间动画一样。我尝试过使用 CGPoint,但我无法弄清楚。
CGPoint firstCenter = ball1.center;
CGPoint secondCenter = ball2.center;
[UIView animateWithDuration:1.0 animations:^{
ball1.center = secondCenter;
ball2.center = firstCenter;
}];
以及精灵运动试试这个链接
关于您的问题,您可以使用核心动画并更改我猜应该做的球的位置
在标题中创建两个 CGPoints 和一个 NSTimer,
CGPoint pos1;
CGPoint pos2;
NSTimer *timer;
在移动图像之前的任何其他方法中,设置将用作图像速度的 CGPoints。由于您在水平移动,因此 CGPoint 分别要求 x 和 y 参数。在本例中,分别使用(2.0,0.0);
和(-2.0,0.0);
表示右和左。
pos = CGPointMake(2.0,0.0);
pos2 = CGPointMake(-2.0,0.0);
然后设置计时器以触发一个名为“move”的方法
timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector (move) userInfo:nil repeats:YES];
创建另一个未全局声明的计时器,以使用名为 的方法阻止球移动stopBalls
。(假设这需要两秒钟。实验并2.0
用任何可行的方法替换)
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector (stopBall) userInfo:nil repeats:YES];
创建-(void)move
使用 CGPoints 和pos
变量来移动图像的方法。假设图像被命名为ball1
和ball2
。
-(void)move
{
ball1.center = CGPointMake(ball1.center.x+pos1.x,ball1.center.y +pos1.y);
if (ball1.center.x > 2024 || ball1.center.x < 0)
pos1.x = -pos1.x;
if (ball1.center.y > 768 || ball1.center.y < 0)
pos1.y = -pos1.y;
ball2.center = CGPointMake(ball2.center.x+pos2.x,ball2.center.y +pos2.y);
if (ball2.center.x > 2024 || ball2.center.x < 0)
pos2.x = -pos2.x;
if (ball2.center.y > 768 || ball2.center.y < 0)
pos2.y = -pos2.y;
}
然后创建stopBalls
阻止球移动的方法。这将重置 CGPoint 并停止timer
。
-(void)stopBalls
{
pos = CGPointMake(0.0,0.0);
pos2 = CGPointMake(0.0,0.0);
[timer invalidate];
}
只需重新运行用于启动运动的方法即可再次进行。
在球移动时也不要多次运行该方法,因为这会使速度加倍,因为另一个计时器(2.0,0.0);
会(-2.0,0.0);
被触发。