Ios 如何在移动动画期间中途调整视图的大小?

Ios 如何在移动动画期间中途调整视图的大小?,ios,core-animation,Ios,Core Animation,在子视图的滑动动画(向下、暂停,然后向上回到原始位置)期间,设备会旋转,因此超级视图会旋转。我想保持子视图的宽度与超级视图相同,因此需要在其滑动动画期间调整其大小 以下是滑动动画代码: [UIView animateWithDuration:0.3 animations:^{ self.frame = finalFrame; } completion:^(BOOL finished) { [UIView animateWithDuration:0.3 delay:3 option

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

以下是滑动动画代码:

[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.
}

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


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

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


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

这里似乎没有自动调整大小的魔法。必须:

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

  • 这里有一个示例项目供参考:。

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

  • 记录动画的进度
  • 检测到旋转时,取消旧动画,调整视图大小,并从当前进度开始添加新动画
  • 这里有一个示例项目供参考:。

    问题在于“调整大小”不是提前计划的,而是由用户旋转设备触发的。我必须处理中间的滑动动画。我已经用代码更新了这个问题。问题是“调整大小”不是提前计划的,它是由用户旋转设备触发的。我必须处理中间的滑动动画。我已经用代码更新了这个问题。