当前位置: 首页 > 知识库问答 >
问题:

IOS6中的力景观视图

池阳伯
2023-03-14

我知道有很多关于如何在IOS6中强制定向的线程,但它们似乎都不适合我,所以现在我需要一些帮助来解决这个问题。

我有一个基于导航的应用程序,它有许多视图控制器。除了必须在横向模式下加载(用户无需先转动手机)的视图外,所有这些视图都是纵向视图。

在导航控制器的实现中,我添加了shouldAutorotate、supportedInterfaceOrientations和preferredInterfaceOriantationForPresentation。

@implementation UINavigationController (Rotation_IOS6)

- (BOOL)shouldAutorotate
{
    return [self.topViewController shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations
{
    return [self.topViewController supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [self.topViewController preferredInterfaceOrientationForPresentation];
}

@end

因此,它返回在每个视图控制器中定义的值。

在应用程序委托中,我支持InterfaceOrientationsForWindow。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{

//Default orientations value
NSUInteger orientations = UIInterfaceOrientationMaskAllButUpsideDown;

//Get orientation from the last view controller
if(self.window.rootViewController){
    UIViewController *presentedViewController = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject];
    orientations = [presentedViewController supportedInterfaceOrientations];
}

return orientations;
}

在每个视图控制器中,我都有该视图的设置,例如:

// Only allow portrait view
-(NSInteger)supportedInterfaceOrientations{    
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotate {
    return YES;
}

我按下一个视图控制器,如下所示:

NextViewController *nxtController = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil];
[self.navigationController pushViewController:nxtController animated:YES];

但当我按下横向视图控制器时,当我以纵向方向握住手机时,它也会以纵向模式加载。如果我然后倾斜手机,它会触发自动旋转功能并将视图旋转到横向模式,然后它会锁定在该模式。但是,我需要在横向模式下锁定它,而不使用手机方向来触发它检查自动旋转。有什么想法吗?

共有2个答案

栾瑞
2023-03-14

转到项目设置并删除对您不需要的模式的选择。

方季同
2023-03-14

您可以尝试使用始终返回横向的shouldaAutorotateToInterfaceOrientation强制viewController在横向中显示,例如:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
 类似资料:
  • 矩形是正确的,因为它填充矩形形状的前2行正确显示。这是我有问题的文本。

  • 使用说明 能力说明 此能力主要用于为智能设备提供音频服务,使用前需要接入设备管理,功能包括歌单管理、点播服务,消费用户网盘里的音频文件。 接入步骤 1、获取access_token,参考开放平台接入文档 2、进行设备注册和设备绑定,参考开放平台设备管理接口文档:https://www.wenjiangs.com/doc/XrjSiCif 3、使用 access_token + deviceId 请

  • 您是否设法在横向模式下填充PDF文档? 谢谢你的帮助。

  • 我有一个iPhone应用程序,它使用一个UINavigationController来呈现一个深入的界面:首先是一个视图,然后是另一个视图,最多四层。我希望前三个视图限制为纵向,并且只允许最后一个视图旋转为横向。当从第四个视图返回到第三个视图时,第四个视图是横向的,我希望所有的东西都旋转回纵向。 在iOS5中,我简单地在我的每个视图控制器中定义了以返回YES作为允许的方向。一切都如上所述工作,包括

  • 在IntelliJ中使用默认的Gradle包装器和create directories选项创建Gradle项目后,我看到项目结构使用文件创建。 IntelliJ提示我:“您可以配置Gradle包装器使用带有源代码的发行版。它将为IDE提供Gradle API/DSL文档”--但即使在单击“确定,应用建议”之后,我也无法附加源代码。Gradle项目正在刷新,但未附加源代码。 我们正在使用Nexus存

  • 我已经创建了一个cytoscape.js图。允许用户在任何节点上单击和缩放/向下钻取,以查看所有邻近的节点和边缘。我需要添加一个重置按钮,这将恢复图形到它的原始位置,即当页面第一次加载。我尝试使用了几个不同的函数,如cy.load、forcerender、cy.destroy和recreate graph。唯一剩下的就是从dom中清除整个对象并添加另一个cytoscape图形对象。我想知道是否有一