我有以下例程来简单地在屏幕上为图像设置动画效果。简单移动uiimageview代码不动画
-(void)animateGrasland {
[UIView animateWithDuration:5 delay:0.0 options:UIViewAnimationOptionCurveLinear
animations:^{
CGRect newFrame = CGRectMake(100,100,1024,768);
self.grasland.frame = newFrame;
}
completion:^(BOOL finished) {
}
];
}
我想在加载视图后立即开始动画。并持续5秒。所以我一直在试验几个选项来调用函数。
选项I - 此选项会立即在新位置显示图像,无动画!
- (void)viewDidLoad {
[super viewDidLoad];
[self animateGrasland];
}
选项II - 此选项将图像动画化到新的位置。答对了。
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(animateGrasland) userInfo:nil repeats:NO];
}
我有时间玩一点延迟,动作开始时间为0.001秒。如果持续时间为0.0001秒,则图像立即显示在新位置,因此无需动画。我期望解析viewDidLoad(和其他后台例程导致这一点)的持续时间。
因此,因为在故事板中设置的初始位置(0,0)在viewDidLoad期间更新,所以不会触发动画。动画立即移动到完成状态。
开始它,您希望动画持续5秒或您想要在5秒后执行动画吗? – Divya
尝试移动代码'CGRect newFrame = CGRectMake(0,0,1024,768); self.grasland.frame = newFrame;'到其他地方,比如'viewDidLoad'方法。 – GoGreen
我刚刚在正常的UIView上试过你的代码,它按预期工作 - 动画持续5秒。你在代码中运行这个动画吗? self.grasland是一个UIView对象吗? – tanzolone