Ios 仅在设备旋转时旋转某些UI元素

Ios 仅在设备旋转时旋转某些UI元素,ios,objective-c,orientation,Ios,Objective C,Orientation,我有一个UI,其中布局可以在任何方向上工作,但是特定的UI元素需要旋转以匹配当前设备方向,并且状态栏应该始终处于当前方向。为此,在我的视图控制器中 - (BOOL)shouldAutorotate { return NO; } 在我的设置中,我是这样做的 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interfaceChange:) name:UIDeviceOrientationD

我有一个UI,其中布局可以在任何方向上工作,但是特定的UI元素需要旋转以匹配当前设备方向,并且状态栏应该始终处于当前方向。为此,在我的视图控制器中

- (BOOL)shouldAutorotate {
    return NO;
}
在我的设置中,我是这样做的

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

在选择器中,我将界面更改和状态栏方向设置为新设备方向的动画。这在我的应用程序中运行良好,但有一次确实导致了控制中心的布局问题。我只是想检查一下这是实现这一点的最佳/正确方法?

1您可以创建2个视图层次结构,并通过以下链接更改willRotateToInterfaceOrientation中屏幕上的内容:


2或者您可以通过以下链接自己处理所有旋转:。

第一种方法并不适用,第二种方法是我描述的我已经做过的,我只是想验证这是最好的方法。我所描述的方法改进了第2条中的链接,因为我从shouldAutorotate返回NO,这比从Apple的文档中只返回一个界面方向更有效:“如果你想暂时禁用自动旋转,请避免操纵方向遮罩来执行此操作。相反,在最顶部的视图控制器上重写shouldAutorotate方法。在执行任何自动旋转之前调用此方法。如果返回“否”,则旋转将被抑制”