2012-09-29 83 views
1

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

这里是滑动动画代码:

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

回答

1

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

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

以下是供参考的示例项目:http://d.pr/f/M4UW

0

可以动画显示层的bounds来改变宽度。只需使高度相同并为边界应用动画即可。

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

+1

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

相关问题