使用按钮移动图像

时间:2014-10-05 16:45:50

标签: objective-c

我有一个按钮。单击它后,它会消失。我想让它在一个页面上连续向下移动UIImageView。

我尝试了一个for循环语句但是Image只下降了200 y坐标。这是声明:

for (int i = 1; i <= 200; i++)
{
    CGRect oldFrame = _rocketship.frame;
    CGRect newFrame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y + 1, oldFrame.size.width, oldFrame.size.height);
    _rocketship.frame = newFrame;
}
[self.rocketship startAnimating];

我认为Image会继续沿着页面移动,因此for语句,但它没有。有没有其他方法可以做到这一点?

(PS:while循环语句做同样的事情)

3 个答案:

答案 0 :(得分:1)

在IOS中,当主线程可用且当前没有运行任何内容时,屏幕会更新。

你正在做的事情永远不会奏效。您所做的只是将视图位置设置为离开屏幕,因为for循环将在更新投票之前完成。

您需要做的是使用核心动画。

UIView上有一个以“aninateWithDuration”开头的类方法。有几种不同的方法。

这些是您在IOS中为动画制作动画所需使用的方法。

我现在无法回答代码,因为我正在使用手机,但请查看UIView的文档。它将包含这些动画方法的文档。

方法是......

[UIView animateWithDuration:1.0
     animations:^{
        // set the end position here
     }];

此外,我有一种感觉,你可能会有自动布局。如果是这样,请告诉我,因为如果是这种情况,有不同的动画方式。

答案 1 :(得分:0)

尝试这样的事情:

[UIView animateWithDuration:1.0 animations:^{
        CGRect oldFrame = _rocketship.frame;
        CGRect newFrame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y + 200, oldFrame.size.width, oldFrame.size.height);
        _rocketship.frame = newFrame;
}];

答案 2 :(得分:0)

Josue Espinosa几乎是正确的

[UIView animationWithDuration:1.0{ CGRect oldFrame = _rocketship.frame; CGRect newFrame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y + 1, oldFrame.size.width, oldFrame.size.height); _rocketship.frame = newFrame;

[UIView animationWithDuration:1.0{ CGRect oldFrame = _rocketship.frame; CGRect newFrame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y + 1, oldFrame.size.width, oldFrame.size.height); _rocketship.frame = newFrame;

but you probably want to move the image more then 1 pixel. the way this work is that this will animate the movement to the new location from point A to point B taking the time duration. in the code above it will take 1 second to move the button from point A to point B so say you want to move the button down 200 pixel the coude should be:

这基本上会动画您设置为最终结果的任何视觉变化。从州A到州B.