我在iOS上有一个视图应用程序。然后我使用view.layer
在CAKeyframeAnimation
的子图层上添加了动画。只要设备直立,它就可以完美地工作。旋转设备后,动画会随设备“旋转”。因此,当我转动设备时,从左到右的翻译成为从上到下的翻译,依此类推。
UIViewController
的视图会按原样旋转,但子CALayer
转换不会。
我无法理解我是如何处理的。我可以通过自己的旋转来反击设备旋转,正如post所暗示的那样。感觉就像我错过了一些东西。我需要做些什么才能启用此功能,还是我真的需要手动处理旋转?
答案 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;
}