3 回答

TA貢獻1816條經驗 獲得超4個贊
僅歷史性答案。驚人地過時了。
請注意,此答案現在已經過時/
這個答案只是出于歷史的好奇心。
令人興奮的消息!如以下Andrew所發現,此問題已由Apple在4.0+中修復。
似乎不再需要在每個視圖上強制使用該視圖的大小,并且解決了“僅在第一次使用時”景觀的特定嚴重問題。
截至2011年4月,不可能測試甚至構建低于4.0的東西,所以這個問題純粹是歷史性的好奇。令人難以置信的是,這么長的時間給開發人員造成了多大的麻煩!
這是原始的討論和解決方案?,F在,這完全不相關,因為這些系統甚至無法運行。
完全無法完成這項工作非常困難-至少存在三個問題/錯誤。
試試這個.. 界面生成器的景觀設計
特別要注意的是,它說“并且您需要在任何地方正確使用shouldAutorotateToInterfaceOrientation”時,它表示在任何地方,所有全屏視圖。
希望它能在這場噩夢中有所幫助!
在這里手的附加眾所周知的問題的一個重要的提示:如果你想之間交換不止一個視圖(所有橫向),它根本不起作用。記住這一點很重要,否則您將在問題上浪費很多時間。從字面上看這是不可能的。這是iOS平臺上最大的已知漏洞。實際上,沒有辦法使硬件使您加載的第二個視圖成為風景。煩人但簡單的解決方法以及必須要做的就是擁有一個瑣碎的主UIViewController,它只坐在那兒什么都不做,讓您在視圖之間交換。
換句話說,在iOS中由于一個主要的已知錯誤:
[window addSubview:happyThing.view];
[window makeKeyAndVisible];
您只能這樣做一次。以后,如果您嘗試刪除happyThing.view,而是將其放置在newThing.view中,則它不起作用-就是這樣。機器將永遠不會將視圖旋轉到風景。沒有技巧修復,甚至Apple也無法使它起作用。您必須采用的解決方法是擁有一個整體UIViewController,該UIViewController只是坐在那里并只保存您的各種視圖(happyThing,newThing等)。希望能幫助到你!

TA貢獻1836條經驗 獲得超13個贊
經過我自己測試后,所有帖子的摘要和集成;檢查以下4.x,5.x的更新。
從3.2版本開始,您無法通過代碼更改正在運行的應用程序的方向。
但是您可以以固定的方向啟動應用程序,盡管這樣做并非易事。
試試這個食譜:
將方向設置UISupportedInterfaceOrientations為Info.plist文件中的
在窗口中定義一個480x320“基本視圖控制器”。其他所有視圖將作為子視圖添加到其視圖。
在所有視圖控制器中設置shouldAutorotateToInterfaceOrientation:方法(當然,要返回您在plist中定義的相同值)
在所有視圖控制器中,使用
self.view.frame = CGRectMake(0, 0, 480, 320)
在viewDidLoad方法中。
更新(iOS 4.x,5.x):《 Apple iOS應用程序編程指南》的“高級應用程序技巧”一章中有“以橫向模式啟動”段落。
- 3 回答
- 0 關注
- 371 瀏覽
添加回答
舉報