更新:是否可以将一个UIViewController
(vc1
)作为容器,将一个UIViewController
作为子容(vc2
)< / p>
[vs1 addChildViewController:vc2];
[vs1.view addSubview:vc2.view];
并允许vc2
中的方向更改独立于vc1
支持的方向?
F.e vc1
仅支持纵向方向,但vc2
支持所有方向。
我希望vc2
视图旋转到横向,同时vc1
视图仍然是纵向。
F.e我有VC1和VC2(弹出窗口)
VC1仅支持纵向,但VC2支持所有方向。
我想要弹出式横向
答案 0 :(得分:0)
父视图控制器检测到方向。我使用的方法是在父视图控制器中,检测哪个视图是当前活动视图,然后根据它进行定向。
答案 1 :(得分:0)
抱歉,标准行为无法满足您的需求。当childViewController支持某个方向时,其父级和当前层次结构中的所有其他ViewControllers也必须支持该方向。
您应该做的是注册parentViewController以接收设备旋转通知,然后根据您可以转换childViewController的视图。所以基本上你的应用程序将始终保持纵向模式,但是childViewController的视图将被转换为看起来像是在横向上。
注册设备方向通知,如此
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(deviceDidRotate:) name: UIDeviceOrientationDidChangeNotification object: nil];
然后像这样处理它
// This method gets called everytime the device (!), not the viewController rotates
-(void)deviceDidRotate: (NSNotification*) notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
// Animate the transform here based on the orientation
}
请记住,UIDeviceOrientation和UIInterfaceOrientation是相反的。 UIDeviceOrientationLandscapeLeft = UIInterfaceOrientationLandscapeRight。设备向左旋转,因此用户界面必须向右旋转。