1

在子视图的滑动动画(向下,暂停,然后向上回到原始位置)期间,设备旋转,因此超级视图旋转。我想保持子视图的宽度与父视图相同,所以我需要在其滑动动画期间调整它的大小。

这是滑动动画代码:

[UIView animateWithDuration:0.3 animations:^{
    self.frame = finalFrame;
} completion:^(BOOL finished) {
    [UIView animateWithDuration:0.3 delay:3 options:0 animations:^{
        self.frame = initFrame;
    } completion:^(BOOL finished) {
        [self removeFromSuperview];
    }];
}];

这是我检测旋转时调用的方法:

- (void)rotate:(NSNotification *)notif {
    // What to do here to adjust the width but also keep the sliding animation going.
}
4

2 回答 2

1

似乎没有可以在这里使用的自动调整大小的魔法。必须:

  1. 记录动画的进度。
  2. 在检测到旋转时,取消旧动画,调整视图大小,并从当前进度开始添加新动画。

这是一个示例项目供参考:http ://d.pr/f/M4UW 。

于 2012-09-30T20:06:41.500 回答
0

您可以为图层设置动画bounds以更改宽度。只需使高度相同并为边界应用动画即可。

如果您希望两个动画具有相同的持续时间、计时功能等,那么您可以将它们都添加到动画组中,然后将该组添加到您正在制作动画的图层中。

于 2012-09-29T18:35:17.023 回答