有没有办法在不使用CABasicAnimation的情况下从右到左动画UIImageView?我遇到了麻烦,我想找到另一种方法。
“地面”图像为1200(宽度)x 33(高度),我想从右向左移动,模拟无限重复的无尽跑步者。
如果没有CALayer / CABasicAnimation,我怎样才能实现?
谢谢!
答案 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。
希望它有所帮助。如果您对脚本有任何问题或建议,请与我联系=)