所以,我放弃了试图解决我一直有一个问题,我的控制器将不叫我的旋转shouldAutorotateToInterfaceOrientation:
方法,因为每个人都几年一直声称它作为iOS的错误。
现在我只是需要用力转动我UIViewController
。 有没有一种方法,我可以做到这一点,因为UIDevice
实例方法已被删除,现在我不知道该怎么给力转动我的控制器是什么。
所以,我放弃了试图解决我一直有一个问题,我的控制器将不叫我的旋转shouldAutorotateToInterfaceOrientation:
方法,因为每个人都几年一直声称它作为iOS的错误。
现在我只是需要用力转动我UIViewController
。 有没有一种方法,我可以做到这一点,因为UIDevice
实例方法已被删除,现在我不知道该怎么给力转动我的控制器是什么。
我不知道它UIDevice
方法,你是说已被删除,但下面为我工作(这并不使用UIDevice
orientation
方法)。 底线,如果你有一个只接受景观视图,可以使用以下方法来强制的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。 我一直在试图强行打开和关闭景观视野了一个多星期了,没有留下头发:(对于大家有没有发现这个问题,没有答案的工作,或任何对强迫景观其他无数的答案,我终于找到了一些作品在这里: http://www.btday.com/how-to-force-view-controller-orientation-in-ios-8/
建议是把操作viewDidAppear,但它也似乎在viewWillAppear中工作,并略少丑。
override func viewWillAppear(animated: Bool) {
UIDevice.currentDevice().setValue(UIInterfaceOrientation.LandscapeLeft.rawValue, forKey: "orientation")
}
如果这是错误/坏,请大声说出来,只有一点点的Mac过了一个月,所以我总nuub!
另外请注意,我用的UITabBarController,它似乎并不无论你把这个标签栏控制器或它的一个孩子