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