我有一个视图控制器,其中视图是手动布局的(无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
删除该行,则动画可以正常运行。
这种行为的解释是什么,推荐的解决方法是什么?
答案 0 :(得分:0)
您是否尝试在viewDidApper
中调用动画方法?而不是使用viewDidLayoutSubviews
尝试使用viewDidLoad