2

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

UIViewController视图会旋转,但子CALayer变换不会。

我不明白我需要如何处理它。正如这篇文章所建议的,我可以用我自己的旋转来对抗设备旋转。感觉就像我错过了一些东西。我需要做些什么来启用它还是我真的需要手动处理旋转?

4

1 回答 1

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;
}
于 2012-10-19T23:34:09.720 回答