我按照帖子的建议做了,并通过旋转来对抗设备方向。这是代码,为了他人的利益:
- (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;
}