2013-10-26 63 views
0

我用這個代碼,迫使我的主屏幕(我的應用程序的第一個畫面)是人像,而其他屏幕依然支持所有方向:力的ios應用程序的第一個屏幕變爲縱向,但其他屏幕景觀的iOS 6+

public class RltNavigationController : UINavigationController 
{ 
    public RltNavigationController() : base() 
    { 
    } 

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() 
    { 
     if(this.TopViewController is HomeScreen) 
      return UIInterfaceOrientationMask.Portrait ; 
     else 
      return UIInterfaceOrientationMask.AllButUpsideDown ; 

    } 

    public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation) 
    { 
     // Return true for supported orientations 
     if(this.TopViewController is HomeScreen) 
      return (toInterfaceOrientation == UIInterfaceOrientation.Portrait); 
     else 
      return (toInterfaceOrientation != UIInterfaceOrientation.PortraitUpsideDown) ; 

    } 


} 

現在,假設該設備上的主屏幕上橫向(儀表lanscape但屏幕只顯示畫像)。現在,如果用戶轉到其他視圖,其他視圖現在將顯示縱向,同時它應顯示橫向。我可以選擇什麼解決方案來加載其實際旋轉的第二個視圖?

編輯

感謝所有的答案,只是通知已經問題不是我不能強迫屏幕變爲縱向。爲了瞭解這個問題,請按照場景:

- >首先屏強制變爲縱向。

- >設備是景觀權利,我在主屏幕(使主屏幕顯示人像)

- >現在我切換到支持所有方向

另一個屏幕 - >在另一個屏幕,因爲父屏幕的畫像拿給畫像(而由於設備山水它應該顯示景觀)

回答

0

您也可以直接從廈門國際銀行選擇特定的viewController是橫向或縱向和相同的負載。

0

你不能明確地說,是的viewController景觀和視野將景觀。它的工作方式是,你問控制器是控制器的屏幕,這可能是一個導航控制器,選項卡視圖控制器,模式,他們希望能夠旋轉。如果你有一個導航控制器,那麼所有viewController將只有你的導航控制器的旋轉。

有像繼承導航控制器,並通過應該會自動旋轉方法,調用一些小技巧[self.visibleViewController shouldAutoRotate]該協會致力於使屏幕旋轉和不可旋轉,但是如果你只有1個屏幕,支持所有方向和所有其他人不這樣做,那麼你就在那裏,如果你推或彈出一個推/彈出錯誤,而在不同的方向下一個的viewController將在這個方向。

既然你不能直接告訴明確旋轉RootViewController的,下一個最好的解決方案是,

  • 答:使用QuartzCore手動旋轉自己的觀點
  • B:有一個單獨的廈門國際銀行文件每一個方向,所以當你旋轉爲橫向,你看風景的viewController,反之亦然
+0

謝謝, 你能給我一個上述解決方案的例子或教程? –

0

做到這一點,最簡單的方法是創建一個自定義導航控制器(UINavigationController的子類)繼承基礎上,其旋轉當前可見視圖控制器

內,您的自定義導航控制器:

-(NSUInteger) supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAllButUpsideDown; 
} 

-(BOOL) shouldAutorotate { 
    return self.topViewController.shouldAutorotate; 
} 

然後內的任何範圍內的視圖控制器,添加這些方法:

-(BOOL)shouldAutorotate{ 
    return NO; 
} 

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
    return UIInterfaceOrientationPortrait; 
} 

這對於一個視你不想要自動旋轉。相應地修改您想要旋轉的視圖。

確保您的項目設置在要啓用的方向上有旋轉,並確保對包含多個可能的旋轉的任何視圖層次結構使用自定義導航控制器,而不是常規導航控制器。

請注意,如果旋轉的視圖被彈出且前一視圖不可旋轉,則可能會遇到問題。關於我的頭頂,我不確定這是否能正常工作。

相關問題