问题标签 [shouldautorotate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1180 浏览

swift - 改变方向时无法自动旋转

我正在使用 Swift4 使用 Xcode9 开发一个应用程序,它最初是为 iPad 设计的,但现在也需要在手机上运行。我需要将手机锁定为纵向,iPad 保持纵向/横向。

在使用 shouldautorotate 函数并根据设备返回 true 或 false 之前,我已经完成了此操作,如下所示。

但是,当我更改方向时,它不会触发。这是另一种折旧的方法吗?如果是,我现在如何限制方向?

0 投票
2 回答
48 浏览

ios - 试图阻止 iPhone 4 上的方向更改

我在 iOS 应用程序中遇到了旋转(方向更改)问题。该应用程序有几个视图控制器可供导航。

我希望它可以旋转,除了 iPhone 4(3.5 英寸设备)。在 3.5 英寸设备上,它应该始终保持纵向模式。

我能够防止直接旋转,即在视图控制器内部时,如果用户将设备保持在纵向模式并且它们处于横向模式,则不会发生任何事情。这正是我想要的。

在横向模式下更改视图控制器时会出现问题。在这种情况下,新的视图控制器以横向模式显示,我不希望这样。

我试着用

当设备为 3.5 英寸时返回 NO,但这不起作用。

如何防止这种行为?

我可能需要添加一个细节:我用来测试的 3.5 英寸设备运行 iOS 版本 9.3.5。

我正在使用 Xcode 9.4.1。

0 投票
1 回答
36 浏览

objective-c - - (NSUInteger)supportedInterfaceOrientations 没有通过项目中的自定义框架调用

  • (NSUInteger)supportedInterfaceOrientations 没有在我在项目的 UIViewController 中使用过的自定义框架中被调用,而在单独的项目中它工作正常并且被正确调用

    • (BOOL)shouldAutorotate { 返回 YES; }

    • (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }

    • (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; }

有没有办法通过项目中的自定义框架调用它?

0 投票
1 回答
40 浏览

ios - 如何使用 `var shouldAutorotate` 旋转屏幕返回 false

如何在不自动旋转的情况下设置指定的页面旋转?我发现只有在var shouldAutorotate返回yes时屏幕才能旋转,但我不想自动这样做,我想自己控制旋转的时刻

0 投票
1 回答
804 浏览

ios - info.plist 中支持的接口方向似乎阻止了对 shouldAutorotate 的调用

我正在设计一个 iPad/iPhone 应用程序,其中的界面设计为横向和纵向一样好,并且我希望界面在启动时在一个方向和另一个方向上一样优雅地出现。同时,我需要能够在不同时间启用/禁用自动旋转。我想我知道如何做这两件事,但它们似乎不能很好地结合在一起。

我可以在 Xcode 项目中设置允许的设备方向,这似乎在项目 info.plist 中创建了几个数组项:“支持的界面方向(iPad)”和“支持的界面方向(iPhone)”列出了允许的方向对于每种类型的设备。这些项目的存在使得从启动屏幕的过渡在所有方向上都像丝绸一样平滑。

我可以通过在我的根视图控制器中覆盖 shouldAutorotate 来启用/禁用自动旋转(目前只有一个控制器)。问题是 info.plist 中 Supported Interface 项的存在似乎抑制了对 shouldAutorotate 的所有调用,从而导致对自动旋转的控制无效。

我正在使用 viewDidLoad 尽早调用尝试RotationToDeviceOrientation()。如果我不这样做,即使设备处于横向,应用程序屏幕也会以纵向显示。(对于 Portrait,它显示正确,但 Portrait 不正确。)我尝试从其他地方进行类似的调用,包括应用程序委托中的 didFinishLaunchingWithOptions,我认为这可能是最合乎逻辑的地方,但它没有t 似乎有所作为。

如果我从 info.plist 中删除 Supported Orientation 项,并在代码中定义允许的方向,如图所示,我可以从我的 NSLog 提示中看到,对 shouldAutorotate 的调用确实发生在适当的时刻,但是在横向启动时看起来有点尴尬。在启动屏幕中,状态栏的方向是错误的:沿着垂直边缘之一而不是在顶部,当过渡到应用程序屏幕时,它通常会从水平方向倾斜约 10-20°。它会立即变为水平状态(实际上它是如此之快,以至于有时很难看到),然后状态栏正确地位于顶部,从那一刻开始一切看起来都很好,但效果似乎仍然有点不专业。

由于它只是暂时发生,并且只在启动时发生一次,我想我可以忍受它(我不能没有自动旋转控制)但我希望有人能提出一种方法来让 shouldAutorotate 调用即使在定义的方向上也能工作信息.plist。或者也许其他一些策略?