这是我用于动画的代码。
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
视图不动。任何人都知道为什么会这样。
答案 0 :(得分:0)
狂野猜测
由于某种原因,动画块不喜欢CGRectMake在块内,尝试更早地创建它。
答案 1 :(得分:0)
嗯,之前有人回答过这个问题,但由于某些原因,他的评论消失了。 Apperntley我在一个不同于主要线程的线程上更改框架,我在主线程上使用它执行它,并且它有效。
dispatch_async(dispatch_get_main_queue(), ^{
// do work here
});