简单移动uiimageview代码不动画

时间:2014-01-27 11:11:40

标签: ios animation uiimageview uiimage

我有以下例程来简单地在屏幕上为图像设置动画。

-(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) {

                         }
         ];
}

我想在加载View后立即启动动画。并持续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(以及其他后台例程)的持续时间会导致这种情况。

因为在storyDidLoad期间更新了故事板中设置的初始位置(0,0),所以不会触发动画。并且动画立即移动到完成状态。

1 个答案:

答案 0 :(得分:0)

尝试在animateGrasland而不是viewDidAppear:中调用viewDidLoad,如下所示:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated]
    [self animateGrasland];
}

// Remove your implementation of the viewDidLoad method or at least the call to animateGrasland
视图加载到内存后调用

viewDidLoad,而在将视图添加到视图层次结构后调用viewDidAppear:。在您的情况下,这意味着在视图可见之后。由于您希望动画在视图可见时立即启动,因此您应该在viewDidAppear:

中启动它