0

我想将图像从屏幕的一侧移动到另一侧。

我有两个 UIImageViews,ball1 和 ball2。一个在左边,一个在右边。设备处于横向模式。当用户单击按钮时,我希望他们切换侧面,就像补间动画一样。我尝试过使用 CGPoint,但我无法弄清楚。

4

3 回答 3

2
CGPoint firstCenter = ball1.center;
CGPoint secondCenter = ball2.center;
[UIView animateWithDuration:1.0 animations:^{
    ball1.center = secondCenter;
    ball2.center = firstCenter;
}];
于 2012-07-19T05:31:34.120 回答
0

以及精灵运动试试这个链接

关于您的问题,您可以使用核心动画并更改我猜应该做的球的位置

于 2012-07-19T05:34:27.300 回答
0

在标题中创建两个 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变量来移动图像的方法。假设图像被命名为ball1ball2

-(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);被触发。

于 2012-07-19T05:44:44.373 回答