无尽的跑步者imageview动画(没有SpriteKit)

时间:2016-04-01 15:08:46

标签: ios objective-c uikit calayer cabasicanimation

有没有办法在不使用CABasicAnimation的情况下从右到左动画UIImageView?我遇到了麻烦,我想找到另一种方法。

“地面”图像为1200(宽度)x 33(高度),我想从右向左移动,模拟无限重复的无尽跑步者。

如果没有CALayer / CABasicAnimation,我怎样才能实现?

谢谢!

2 个答案:

答案 0 :(得分:1)

UIView上的一系列方法允许任何动画,特别是移动视图。

你可以像这样移动你的imageView:

[UIView animateWithDuration:10
                 animations:^{

                     yourImageView.frame = frame_you_need;
                 }
                 completion:^(BOOL finished){

                    //start from the very beginning
                    //set initial frame to the image view and run the 
                    // animation again
                 }];

所以你需要两个图像视图。设置它们的起始位置,在两者上运行动画,在完成动画时再次重复动画。那是

更新

我决定自己实现这个功能。以下是我的动画功能的外观:

- (void)runView:(UIView *)aView withStartPosition:(CGPoint)startPosition
{
aView.center = startPosition;

[UIView animateWithDuration:3
                      delay:0
                    options:UIViewAnimationOptionCurveLinear
                 animations:^{

                     CGPoint newPosition = CGPointMake(aView.center.x + aView.frame.size.width, aView.center.y);
                     aView.center = newPosition;
                 }
                 completion:^(BOOL finished){

                     [self runView:aView withStartPosition:startPosition];

                 }];
}

展示此功能的项目位于:Github

答案 1 :(得分:0)

由于UIView.animateWithDuration有时难以实现,因此我创建了一种执行动画的方法,使序列和组更容易。你可以在这里查看:GitHub - UIAnimation 。它是SKAction的UIKit版本。

使用这种UIAnimation实现你想要的方法是:

public class AlarmService extends IntentService
{
    public AlarmService()
    {
        super("AlarmService");
    }

    @Override
    public void onCreate()
    {
        super.onCreate();
    }

    @Override
    public void onHandleIntent(Intent intent)
    {
        main.SmoothAlert(AlarmReceiver.Alarmcontext);
    }
}

这里有趣的是你可以存储永久动画'在变量中,并将其重用于要移动的所有imageView。你只需要调用runAnimation。

希望它有所帮助。如果您对脚本有任何问题或建议,请与我联系=)