คำถามติดแท็ก autorotate

25
จะบังคับมุมมองการวางแนวของคอนโทรลเลอร์ใน iOS 8 ได้อย่างไร?
ก่อน iOS 8 เราใช้โค้ดด้านล่างร่วมกับการสนับสนุนInInterfaceOrientationsและควรAutoAutoRotateวิธีการมอบสิทธิ์ในการบังคับให้วางแนวแอพในทิศทางใด ๆ ฉันใช้ข้อมูลโค้ดด้านล่างเพื่อหมุนแอปตามทิศทางที่ต้องการโดยทางโปรแกรม ประการแรกฉันกำลังเปลี่ยนการวางแนวแถบสถานะ จากนั้นเพียงแค่นำเสนอและยกเลิกมุมมองที่เป็นโมฆะทันทีหมุนมุมมองไปยังทิศทางที่ต้องการ [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; UIViewController *c = [[UIViewController alloc]init]; [self presentViewController:vc animated:NO completion:nil]; [self dismissViewControllerAnimated:NO completion:nil]; แต่นี่คือความล้มเหลวใน iOS 8 นอกจากนี้ฉันได้เห็นคำตอบบางอย่างในกองล้นที่คนแนะนำว่าเราควรหลีกเลี่ยงวิธีนี้จาก iOS 8 เป็นต้นไป เพื่อให้เฉพาะเจาะจงมากขึ้นแอปพลิเคชันของฉันเป็นแอปพลิเคชันที่เป็นสากล มีตัวควบคุมทั้งหมดสามตัว ตัวควบคุม First View - มันควรรองรับการหมุนใน iPad และแนวตั้งเท่านั้น (ปุ่มโฮมลง) ใน iPhone ตัวควบคุมมุมมองที่สอง - มันควรรองรับเฉพาะแนวนอนในทุกสภาวะ ตัวควบคุมมุมมองที่สาม - ควรสนับสนุนแนวนอนเท่านั้นในทุกสภาวะ เรากำลังใช้ตัวควบคุมทิศทางสำหรับการนำทางหน้าเว็บ …

15
iOS 6: ฉันจะ จำกัด มุมมองบางส่วนเป็นแนวตั้งและอนุญาตให้ผู้อื่นหมุนได้อย่างไร
ฉันมีแอพ iPhone ที่ใช้UINavigationControllerเพื่อนำเสนออินเทอร์เฟซแบบเจาะลึก: มุมมองแรกหนึ่งมุมมองจากนั้นอีกมุมมองหนึ่งลึกถึงสี่ระดับ ฉันต้องการให้สามมุมมองแรก จำกัด เฉพาะการวางแนวตั้งและเฉพาะมุมมองสุดท้ายเท่านั้นที่ควรได้รับอนุญาตให้หมุนเป็นแนวนอน เมื่อกลับจากมุมมองที่สี่ไปยังมุมมองที่สามและมุมมองที่สี่อยู่ในแนวนอนฉันต้องการให้ทุกอย่างหมุนกลับเป็นแนวตั้ง ใน iOS 5 ฉันเพียงกำหนดshouldAutorotateToInterfaceOrientation:ในตัวควบคุมมุมมองแต่ละตัวของฉันให้ส่งคืนใช่สำหรับการวางแนวที่อนุญาต ทุกอย่างทำงานตามที่อธิบายไว้ข้างต้นรวมถึงการกลับสู่แนวตั้งแม้ว่าอุปกรณ์จะอยู่ในแนวนอนเมื่อกลับจากตัวควบคุมมุมมอง # 4 ถึง # 3 ใน iOS 6 ตัวควบคุมมุมมองทั้งหมดจะหมุนเป็นแนวนอนโดยทำลายสิ่งที่ไม่ได้ตั้งใจไว้ บันทึกประจำรุ่น iOS 6 กล่าวว่า ความรับผิดชอบมากขึ้นกำลังย้ายไปที่แอปและผู้แทนของแอป ตอนนี้คอนเทนเนอร์ iOS (เช่นUINavigationController) ไม่ได้ปรึกษาบุตรหลานเพื่อพิจารณาว่าพวกเขาควรหมุนอัตโนมัติหรือไม่ [... ] ระบบจะขอตัวควบคุมมุมมองแบบเต็มหน้าจอที่อยู่ด้านบนสุด (โดยทั่วไปคือตัวควบคุมมุมมองรูท) สำหรับการวางแนวอินเทอร์เฟซที่รองรับเมื่อใดก็ตามที่อุปกรณ์หมุนหรือเมื่อใดก็ตามที่ตัวควบคุมมุมมองถูกนำเสนอด้วยรูปแบบการนำเสนอแบบเต็มหน้าจอ ยิ่งไปกว่านั้นการวางแนวที่รองรับจะถูกดึงออกมาก็ต่อเมื่อตัวควบคุมมุมมองนี้ส่งคืน YES จากshouldAutorotateวิธีการเท่านั้น [... ] ระบบจะพิจารณาว่าการวางแนวได้รับการสนับสนุนหรือไม่โดยการตัดกันค่าที่ส่งคืนโดยsupportedInterfaceOrientationsForWindow:วิธีการของแอปด้วยค่าที่ส่งคืนโดยsupportedInterfaceOrientationsวิธีการของตัวควบคุมแบบเต็มหน้าจอด้านบนสุด ดังนั้นฉันจึงจัดคลาสย่อยUINavigationControllerให้MainNavigationControllerคุณสมบัติบูลีนของฉันlandscapeOKและใช้สิ่งนี้เพื่อส่งคืนการวางแนวที่อนุญาตในsupportedInterfaceOrientations. จากนั้นในแต่ละviewWillAppear:วิธีการควบคุมมุมมองของฉันฉันมีบรรทัดแบบนี้ [(MainNavigationController*)[self navigationController] setLandscapeOK:YES]; เพื่อบอกMainNavigationControllerพฤติกรรมที่ฉันต้องการ คำถามมาที่นี่:ถ้าตอนนี้ฉันไปที่มุมมองที่สี่ของฉันในโหมดแนวตั้งและพลิกโทรศัพท์จะหมุนเป็นแนวนอน ตอนนี้ฉันกดปุ่มย้อนกลับเพื่อกลับไปที่มุมมองที่สามของฉันซึ่งควรจะใช้งานได้ในแนวตั้งเท่านั้น …
99 ios  iphone  ios6  autorotate 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.