如何在 iOS 7 上随设备旋转设置动画
How to animate along with device rotation on iOS 7
我想在设备旋转的同时制作一些动画。在 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 是正确的调用方法。所以任何 help/guidance 将不胜感激。
谢谢
看来我找到了自己问题的答案。对于那些也想知道同样事情的人,可以使用 willAnimateRotationToInterfaceOrientation 方法。
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
[UIView animateWithDuration:duration animations:^{
// Custom animations
}];
}
看起来自定义动画必须在这里。如果我将动画块移动到 willRotateToInterfaceOrientation 方法,它将不起作用。
我想在设备旋转的同时制作一些动画。在 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 是正确的调用方法。所以任何 help/guidance 将不胜感激。
谢谢
看来我找到了自己问题的答案。对于那些也想知道同样事情的人,可以使用 willAnimateRotationToInterfaceOrientation 方法。
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
[UIView animateWithDuration:duration animations:^{
// Custom animations
}];
}
看起来自定义动画必须在这里。如果我将动画块移动到 willRotateToInterfaceOrientation 方法,它将不起作用。