當我使用[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view]
加入我加載視圖作爲子視圖(這樣談到對所有意見的頂部)即使我的應用鎖定爲橫向,視圖的方向也會以縱向顯示。當我直接添加子視圖時,這不會發生。
任何想法爲什麼我哪裏出錯了?
當我使用[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view]
加入我加載視圖作爲子視圖(這樣談到對所有意見的頂部)即使我的應用鎖定爲橫向,視圖的方向也會以縱向顯示。當我直接添加子視圖時,這不會發生。
任何想法爲什麼我哪裏出錯了?
也猜測沒有代碼,但另一種理論是擁有該視圖的ViewController響應- (BOOL)shouldAutorotateToInterfaceOrientation:
只有肖像的真實值(我認爲很多xcode提供的模板vc代碼默認是這樣做的) 。我們所討論的ViewController可能被稱爲myView(如果我對此正確,「myView」是ViewController實例的一個不好的名稱選擇)。檢查ViewController的shouldAutorotate的實現...確保在預期方向是橫向時它回答YES。
沒有代碼很難說,但這可能是因爲當你直接向窗口添加子視圖時,它不是你的根視圖控制器視圖的子視圖,並且獲取定位通知。我要麼避免它直接添加到窗口的子視圖,或者如果你一定要,註冊取向的通知,像這樣:
[[NSNotificationCenter defaultCenter] addObserver:myView
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
,然後添加適當的方法來你myView
視圖控制器來處理它。
我的應用程序被固定爲橫向模式,那麼它有什麼關係?即使設備未旋轉,也會出現此問題。 – pa12
相關問題:http://stackoverflow.com/questions/2508630/orientation-in-a-uiview-added-to-a-uiwindow – Felix
這是一個奇怪的結構,添加一個視圖作爲'keyWindow的子視圖',並且一定不會收到通知事件。爲什麼不添加爲視圖控制器視圖的子視圖(在這種情況下,視圖控制器將獲得所有適當的旋轉通知事件)。你可以解決你的構造,但爲什麼呢? – Rob