【发布时间】:2014-01-27 11:11:40
【问题描述】:
我有以下例程来简单地为屏幕上的图像设置动画。
-(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 解析的持续时间(和其他后台例程会导致这种情况)。
所以因为在storyboard中设置的初始位置(0,0)是在viewDidLoad期间更新的,所以动画没有被触发。并且动画立即移动到其完成状态。
【问题讨论】:
-
您希望动画持续 5 秒还是要在 5 秒后执行?
-
尝试将代码
CGRect newFrame = CGRectMake(0,0,1024,768); self.grasland.frame = newFrame;移动到其他位置,例如viewDidLoad方法。 -
我刚刚在普通 UIView 上尝试了您的代码,它按预期工作 - 动画持续 5 秒。您在代码中的哪个位置运行此动画? self.grasland 是 UIView 对象吗?
-
@Divya,动画持续时间 5 秒。没有延迟(见问题中的 0.0)
-
您确定要在视图“加载”或视图“出现”时为其设置动画吗?试着把它放在
viewDidAppear:
标签: ios animation uiimageview uiimage