UIView动画不会移动视图

时间:2014-04-11 20:01:42

标签: ios objective-c animation uiview frame

这是我用于动画的代码。

        NSLog(@"SlideLoadingViewOut : frame: X:%f, Y:%f", self.loadingView.frame.origin.x, self.loadingView.frame.origin.y);
        [UIView animateWithDuration:time animations:^{
            self.loadingView.frame = CGRectMake(320, 0, self.loadingView.frame.size.width, self.loadingView.frame.size.height);
            NSLog(@"SlideLoadingViewOut : frame: X:%f, Y:%f", self.loadingView.frame.origin.x, self.loadingView.frame.origin.y);
        } completion:^(BOOL finished) {
            NSLog(@"SlideLoadingViewOut : frame: X:%f, Y:%f", self.loadingView.frame.origin.x, self.loadingView.frame.origin.y);
        }];

这是我得到的控制台中的输出:

动画开始前:

SlideLoadingViewOut : frame: X:0.000000, Y:0.000000

在动画块中:

SlideLoadingViewOut : frame: X:320.000000, Y:0.000000

在完成块中:

SlideLoadingViewOut : frame: X:0.000000, Y:0.000000

视图不动。任何人都知道为什么会这样。

2 个答案:

答案 0 :(得分:0)

狂野猜测

由于某种原因,动画块不喜欢CGRectMake在块内,尝试更早地创建它。

答案 1 :(得分:0)

嗯,之前有人回答过这个问题,但由于某些原因,他的评论消失了。 Apperntley我在一个不同于主要线程的线程上更改框架,我在主线程上使用它执行它,并且它有效。

dispatch_async(dispatch_get_main_queue(), ^{
   // do work here
});