强制旋转UIViewController
所以,我已经放弃了试图解决我一直在我的控制器将无需调用我的shouldAutorotateToInterfaceOrientation:
方法的问题,因为每个人shouldAutorotateToInterfaceOrientation:
这是一个iOS的bug。
现在我需要强制旋转我的UIViewController
。 有没有办法,我可以做到这一点,因为UIDevice
实例方法已被删除,我不知道该怎么办强制旋转我的控制器。
我不知道你说的哪个UIDevice
方法已经被删除了,但是下面的方法对我有用(这个确实使用了UIDevice
方法)。 底线,如果您有一个只接受风景的视图,您可以使用以下内容来强制iOS更改方向。 这很好奇,但是很有效。 我很抱歉,我不能赞扬原作者,但曾经在StackOverflow的其他地方发现:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); } - (void)forceLandscape { // make sure shouldAutorotateToInterfaceOrientation is configured to accept only landscape if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) { UIWindow *window = [[UIApplication sharedApplication] keyWindow]; UIView *view = [window.subviews objectAtIndex:0]; [view removeFromSuperview]; [window addSubview:view]; } }
相当于强制肖像模式(假设,当然,您的shouldAutorotateToInterfaceOrientation
只接受肖像):
- (void)forcePortrait { // make sure shouldAutorotateToInterfaceOrientation is configured to accept only portrait if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation])) { UIWindow *window = [[UIApplication sharedApplication] keyWindow]; UIView *view = [window.subviews objectAtIndex:0]; [view removeFromSuperview]; [window addSubview:view]; } }
使用xcode7.3 ios9。 我一直试图迫使风景观和closures了一个多星期了,没有留下任何的头发:(对于其他人发现这个问题,没有任何答案的工作,或任何其他无数的答案迫使风景,我终于find在这里工作的东西: http : //www.btday.com/how-to-force-view-controller-orientation-in-ios-8/
build议是把操作放在viewDidAppear中,但是它也好像在viewWillAppear中工作,并且稍微不那么难看。
override func viewWillAppear(animated: Bool) { UIDevice.currentDevice().setValue(UIInterfaceOrientation.LandscapeLeft.rawValue, forKey: "orientation") }
如果这是错误的/不好的,请说出来,只有一个月有一个mac,所以我是一个完整的nuub!
另外请注意,我正在使用UITabBarController,这是不是你把这个标签栏控制器或其中的一个孩子