为什么viewDidLayoutSubviews会干扰动画?

时间:2014-04-15 08:58:09

标签: ios animation uiviewcontroller

我有一个视图控制器,其中视图是手动布局的(无xib)。这是在viewDidLayoutSubviews中完成的。我想为其中一个视图设置动画,但动画不起作用(视图没有可观察的动作),因为动画开始时会立即调用viewDidLayoutSubviews

代码的相关部分:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    logo.frame = CGRectMake(0, 0, 640, 360);
}

- (void)shrink
{
    [UIView animateWithDuration:0.5 animations:^{logo.frame = CGRectMake(0, 0, 320, 180);}];
}

当另一个计时器触发时调用shrink方法,因此在视图控制器创建时不会立即调用它。

如果我在其他地方设置了logo.frame并从viewDidLayoutSubviews删除该行,则动画可以正常运行。

这种行为的解释是什么,推荐的解决方法是什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试在viewDidApper中调用动画方法?而不是使用viewDidLayoutSubviews尝试使用viewDidLoad