在当前上下文 (UIModalPresentationStyleOverCurrentContext) 上模态呈现的 viewcontroller 能否随设备旋转?

Can a viewcontroller presented modally over current context (UIModalPresentationStyleOverCurrentContext) be rotated with device?

我有一个控制器,它应该随着界面(设备)方向的改变而旋转。我跟踪方向变化,但是我无法随着设备方向的变化来旋转视图。

我可以为内部视图设置动画,并切换它们的约束等,但我想为此使用 Size 类。当我在呈现控制器时切换到 UIModalPresentationStyleCurrentContext 时它可以工作,但会弄乱我的导航和标签栏,我想这样做。

这样可以吗?

好的,解决了。

我通过将其放在需要更改方向的控制器的 viewDidLoad 中来跟踪设备方向的变化:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                       selector:@selector(orientationChanged:)
                                             name:@"UIDeviceOrientationDidChangeNotification"
                                           object:nil];

然后在 orientationChanged:

- (void)orientationChanged:(NSNotification *)notification{
    [RecorderViewController attemptRotationToDeviceOrientation];
}

为了让它在父控制器中工作,我添加了这些:

-(BOOL) shouldAutorotate {
    return true;
}

-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

此外,为了轮换工作,记录器控制器必须实现这些:

- (BOOL)shouldAutorotate {
    return true;
}




- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAllButUpsideDown;
} 

希望有人觉得这有用。