我知道以前有人问过类似的问题,但这是一个更具体的用例(从静态库控制方向,不能在根视图控制器中编写)。
我有一个静态库,它将 UI 元素作为覆盖添加到传递的视图控制器(客户端的根视图控制器)作为子视图。问题是我们的 UI 元素只支持纵向,而我们客户的应用程序可能同时支持纵向和横向。这很好,只要我们的 UI 元素不会在我们的客户视图自动旋转时自动旋转。
我只想为我们的视图控制器将方向锁定为纵向。在 iOS 6 中,当我在库的视图控制器中使用以下代码时,它根本不会影响自动旋转的行为:
-(BOOL)shouldAutorotate{
return NO;
}
-(NSInteger)supportedInterfaceOrientations{
NSInteger orientationMask = 0;
if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationPortrait])
orientationMask |= UIInterfaceOrientationMaskPortrait;
return orientationMask;
}
当我将相同的代码放在根视图控制器中时,它可以完美运行,应用程序不再自动旋转。但是,这对我们来说不是一个选项,因为在生产中我们将无法访问客户端的根视图控制器。有没有办法从非根视图控制器锁定视图方向,或仅锁定单个视图控制器的方向?还有什么其他方法可以实现我没有想到的我们需要的东西吗?如果可能的话,希望在 iOS <= 6 中工作的解决方案