我有一个按钮。单击它后,它会消失。我想让它在一个页面上连续向下移动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循环语句做同样的事情)
答案 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.