ก่อน 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
ตัวควบคุมมุมมองที่สอง - มันควรรองรับเฉพาะแนวนอนในทุกสภาวะ
ตัวควบคุมมุมมองที่สาม - ควรสนับสนุนแนวนอนเท่านั้นในทุกสภาวะ
เรากำลังใช้ตัวควบคุมทิศทางสำหรับการนำทางหน้าเว็บ จากตัวควบคุมมุมมองแรกในการดำเนินการคลิกปุ่มเราจะผลักดันหนึ่งในกองซ้อน ดังนั้นเมื่อตัวควบคุมมุมมองที่สองมาถึงโดยไม่คำนึงถึงการวางแนวอุปกรณ์แอปควรล็อคในแนวนอนเท่านั้น
ด้านล่างเป็นของฉันshouldAutorotate
และsupportedInterfaceOrientations
วิธีการในตัวควบคุมมุมมองที่สองและสาม
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
มีวิธีแก้ปัญหาสำหรับวิธีนี้หรือวิธีที่ดีกว่าในการล็อกตัวควบคุมมุมมองโดยเฉพาะใน iOS 8 โปรดช่วย !!