2012-12-10 71 views
0

修訂版不同的方向:是否有可能有一個UIViewControllervc1)作爲容器和一個UIViewController作爲一個孩子(vc2的UIViewController容器:允許孩子的

[vs1 addChildViewController:vc2]; 
[vs1.view addSubview:vc2.view]; 

,並允許在vc2方向變化獨立從vc1支持的方向?

F.e vc1只支持縱向,但vc2支持所有方向。 我想查看vc2查看已旋轉到風景,同時vc1查看仍然是肖像。

F.e我有VC1和VC2(彈出)

Portrait

只有縱向的支持VC1,但VC2支持所有方向。

enter image description here

我想有橫向的彈出

enter image description here

+0

爲什麼你想要彈出如果父視圖不會旋轉?只因爲它可以嗎?還是有一個用例,這將是有用的? – benzado

+0

相信我,這對我來說是有用的;) – Injectios

回答

0

方向由父視圖控制器檢測。我使用的方法是在父視圖控制器中,檢測哪個視圖是當前活動視圖,然後根據這個視圖來確定您的方向。

+0

好吧,但我只需要旋轉子視圖,而不是容器.. – Injectios

+0

@InjectIOS你可以發佈你的視圖的樣子嗎? – Bot

0

對不起,你想要的是標準行爲不可能的。當一個childViewController支持某個方向時,它的父級和所有其他ViewController都必須支持這個方向。

你應該做的是註冊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。該設備向左旋轉,因此用戶界面必須向右旋轉。

+0

是的,我正在考慮手動旋轉我孩子的視圖,但是如何自動調整面膜等? – Injectios