如何在 iOS 7 上与设备旋转一起制作动画

Posted

技术标签:

【中文标题】如何在 iOS 7 上与设备旋转一起制作动画【英文标题】:How to animate along with device rotation on iOS 7 【发布时间】:2015-05-19 01:25:49 【问题描述】:

我想做一些动画以及设备旋转。在 ios 8 上,我可以这样做:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) 
        // My custom animation
     completion:nil];

但是这种方法在 iOS 7 上不可用。我尝试做类似的事情如下:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    [self.transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) 
        // Custom animations
     completion:nil];

但是 self.transitionCoordinator 对象在这里是 nil 。有谁知道如何在 iOS 7 上实现同样的效果?

我不确定我是否只是在错误的地方调用了这个 animateAlongsideTransition 方法,或者即使 animateAlongsideTransition 是正确的调用方法。因此,我们将不胜感激任何帮助/指导。

谢谢

【问题讨论】:

【参考方案1】:

看来我已经为自己的问题找到了答案。对于那些也想知道同样事情的人,willAnimateRotationToInterfaceOrientation 方法是一个可以使用的方法。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];

    [UIView animateWithDuration:duration animations:^
        // Custom animations
    ];

看起来自定义动画必须在这里。如果我将动画块移动到 willRotateToInterfaceOrientation 方法,它将不起作用。

【讨论】:

以上是关于如何在 iOS 7 上与设备旋转一起制作动画的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kivy 中制作重复的旋转动画?

旋转设备时,动画 uiview 切换回其原始状态

如何在 iOS 中高效地使用图像制作动画

如何在 STA 线程上与引导程序同时运行动画 SplashScreen

如何利用Thread制作简单的android动画

如何制作 OpenGL (GLUT) 旋转动画?