核心动画和设备方向

时间:2012-10-19 20:41:31

标签: objective-c ios core-animation

我在iOS上有一个视图应用程序。然后我使用view.layerCAKeyframeAnimation的子图层上添加了动画。只要设备直立,它就可以完美地工作。旋转设备后,动画会随设备“旋转”。因此,当我转动设备时,从左到右的翻译成为从上到下的翻译,依此类推。

UIViewController的视图会按原样旋转,但子CALayer转换不会。

我无法理解我是如何处理的。我可以通过自己的旋转来反击设备旋转,正如post所暗示的那样。感觉就像我错过了一些东西。我需要做些什么才能启用此功能,还是我真的需要手动处理旋转?

1 个答案:

答案 0 :(得分:0)

我做了帖子建议的内容,并通过旋转来反击设备方向。这是代码,为了他人的利益:

- (void)setupDeviceCounterRotation
{
  CATransform3D deviceCounterRotation;

  if(self.interfaceOrientation == UIDeviceOrientationPortrait) {
    deviceCounterRotation = CATransform3DIdentity;
  }
  else if(self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown) {
    deviceCounterRotation = CATransform3DMakeRotation(M_PI, 0.0f, 0.0f, 1.0f);
  }
  else if(self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) {
    deviceCounterRotation = CATransform3DMakeRotation(M_PI/2, 0.0f, 0.0f, 1.0f);
  }
  else if(self.interfaceOrientation == UIDeviceOrientationLandscapeRight) {
    deviceCounterRotation = CATransform3DMakeRotation(-M_PI/2, 0.0f, 0.0f, 1.0f);
  }

  self.view.layer.sublayerTransform = deviceCounterRotation;
}