如何在某些情况下停止 iPad 旋转?

Posted

技术标签:

【中文标题】如何在某些情况下停止 iPad 旋转?【英文标题】:How to stop iPad rotation some occasion? 【发布时间】:2013-11-03 19:08:48 【问题描述】:

我有 iPad 应用程序,它是单视图应用程序。该应用程序支持 横向和纵向视图。但它有一个按钮,如果按下它,我想停止该屏幕中的旋转。之后再次按下它,我想再次启用旋转,用户可能不得不再次旋转它。我该怎么做?

【问题讨论】:

shouldRotate 方法中添加一些代码来检查按钮是否被按下。 【参考方案1】:

来自苹果的网站: “如果你想暂时禁用自动旋转,请避免操作方向掩码来执行此操作。相反,覆盖最顶层视图控制器上的 shouldAutorotate 方法。在执行任何自动旋转之前调用此方法。如果它返回 NO,则旋转被抑制。”

【讨论】:

【参考方案2】:

取决于需要支持的平台。如果只有一个比你有理想的情况,不如我:

#pragma mark -
#pragma mark allow rotations
// ios 5
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    return YES;

// iOS6
- (BOOL)shouldAutorotate

    return YES;

// iOS6
- (NSUInteger)supportedInterfaceOrientations

    return UIInterfaceOrientationMaskAll;

该代码将允许旋转。 处理按钮操作并检查变量并返回允许的状态

【讨论】:

【参考方案3】:

视图控制器具有 shouldAutorotate 功能,因此只需使用布尔变量(在本例中为“allowAutoRotation”,类似于:

-(BOOL)shouldAutorotate

    return allowAutoRotation;

【讨论】:

以上是关于如何在某些情况下停止 iPad 旋转?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPad 中自动旋转期间重新排列视图

如何在 iPhone 的横向模式下停止 ABPersonViewController 和 ABNewPersonViewController 的旋转

使用 javascript 检测 iPad 设备方向

在 Universal Xcode 6 项目中仅停止 iPhone 屏幕旋转

如何在没有 ipad 的情况下在纵向和横向条件下测试 ipad 网站?

如何在点击下一个或旋转木马的上一个btn时停止滚动顶部?