我在導航堆棧上有ViewControllers A和B. A不支持橫向,B確實。如果用戶在查看B時旋轉到橫向,然後點擊返回按鈕,則A現在處於橫向。我如何防止這種情況? A的shouldAutorotateToInterfaceOrientation方法有沒有很好的理由?如何只允許導航堆棧中的一個視圖旋轉?
4
A
回答
2
這對視圖控制器來說真的很煩人。而且它似乎不適合自動旋轉。也許,最好從B的shouldAutorotateToInterfaceOrientation返回NO,然後手動執行視圖旋轉。然後,它會不會影響A.
+0
拉我的頭髮!你如何手動強制改變方向?問題是我需要實際改變方向,所以鍵盤顯示在正確的位置。 – 2013-11-20 15:55:07
1
是的,我恨太... 所有我找到解決它是由我自己來做到這一點:
- (void)myAutomaticRotation{
if (A.view.frame.size.width > A.view.frame.size.height) {
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration: 0.5f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(M_PI/2);
self.view.bounds = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
A.view.frame = CGRectMake(0,0,320, 480);
[UIView commitAnimations];
}
}
你可以調用myAutomaticRotation在主/超強的UIViewController當你瀏覽到A.view, 並在同一個地方,你應該使用:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
}
在那裏你可以檢查(A,B)使用的視圖,並允許橫向模式只是對於B ...
luca
+0
感謝您的代碼在這裏。我認爲Max在每個viewController中分別處理旋轉的建議稍微清晰一些。 – initlaunch 2011-02-09 10:36:42
相關問題
- 1. 只允許旋轉一個子圖
- 2. 導航堆棧應該只包含一個視圖
- 3. 只允許一個視圖控制器自動旋轉
- 4. 只允許一個uiviewcontroller旋轉
- 5. 只允許一個控制器旋轉
- 6. 如何只允許特定視圖旋轉? (iPhone)
- 7. 管理堆棧上的導航視圖
- 8. 只在導航堆棧內的一個視圖中隱藏標籤欄
- 9. MvvMCross導航回多個視圖模型/截斷導航堆棧
- 10. 在導航堆棧上推視圖
- 11. 打開導航堆棧外的另一個視圖
- 12. Xamarin.Forms棱鏡從導航堆棧刪除視圖堆棧
- 13. 只允許在標籤欄設置旋轉幾個一個視圖
- 14. 如何從導航堆棧中刪除所有視圖?
- 15. 如何旋轉控制器中不允許旋轉其界面的視圖?
- 16. 如何mentain導航堆棧中的HTML
- 17. 隱藏導航控制器堆棧中的一個導航欄
- 18. 只有頂端的UIViewController是在旋轉,其他導航堆棧上不
- 19. 轉到導航堆棧中的前一個控制器(Swift)
- 20. LinearLayout只允許添加一個視圖
- 21. 防止旋轉的UIView子視圖,允許旋轉同級子視圖
- 22. PushViewController導航到下一個堆棧
- 23. 將視圖控制器放到導航堆棧中導致SIGABRT
- 24. 從導航堆棧
- 25. 導航堆棧在iPhone中
- 26. iPad,主視圖中的導航堆棧,在主視圖中選擇一個項目並更新詳細視圖
- 27. 無法旋轉只有一個視圖
- 28. 在哪裏設置導航堆棧中的視圖控制器導航項目
- 29. 重定向到導航堆棧中的新視圖控制器
- 30. 訪問導航堆棧中的當前視圖控制器
我不明白爲什麼Cocoa Touch在所有的自動交易業務中都走上了這麼長的路,但卻沒有考慮到這種簡單而且非常常見的情況。爲了把它放在那裏+1。 – epologee 2011-02-06 18:28:14