gpt4 book ai didi

iOS 保持状态栏为纵向

转载 作者:行者123 更新时间:2023-12-02 03:16:06 24 4
gpt4 key购买 nike

我有一个使用接近传感器的应用程序,但接近传感器在横向模式下不起作用。我听说如果你将状态栏保持在纵向模式,传感器就会工作我已经尝试过这个但没有成功。

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];

状态栏仍切换为横向模式。

我该怎么办?

最佳答案

如果您希望将应用程序保持在纵向模式(无论设备方向如何),我建议您将以下代码添加到 viewController 中。

- (BOOL) shouldAutorotate{
return NO;
}
- (NSUInteger) supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationPortrait;
}

这将确保您的应用以纵向模式启动,并保持纵向模式,即使设备处于转动状态也是如此。

编辑:为了使应用程序保持横向状态,同时在纵向模式下只有一个 View ,请将上述代码添加到您想要限制为纵向模式的一个 View Controller 中。

将以下函数添加到您的 appDelegate:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
/* This is in order to allow views that do not support landscape mode to be able to load in
*/
return UIInterfaceOrientationMaskAll;
}

将以下代码添加到您的其他 View Controller :

- (BOOL) shouldAutorotate{
return YES;
}
- (NSUInteger) supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeRight; //you can choose either landscape orientation here
}

我建议你使用这个层次结构:

  • RootViewController - 它将包含引用(最好是强)到您的接近传感器,我建议您在后台线程。这将仅支持纵向模式,因此您的接近传感器可以正常工作(我希望)。
  • displayViewController - 它将包含您拥有的所有 UI 元素,并且仅支持横向模式
  • 您可以使用委托(delegate)来管理两者之间的通信

此外,在RootViewController的viewDidApper之后,请使用presentViewController(iOS 6.0及更高版本)或presentModalViewController(iOS 5.x)选择器在屏幕上添加displayViewController的 View 。使用 [self.view addSubview: displayViewController.view]; 将不起作用(我以个人经验发言)。

关于iOS 保持状态栏为纵向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com