如何检测另一个应用程序是否在iOS 11中以幻灯片形式运行?

前端之家收集整理的这篇文章主要介绍了如何检测另一个应用程序是否在iOS 11中以幻灯片形式运行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
多任务处理功能在iOS 11中得到了更新,其中一个是 slide over,在下面的gif中进行了演示.

通过这些更改,再也无法使用techniques that check frame size from iOS 9来检测是否有其他应用程序在我的应用上“滑过”.

是否有任何新方法可以检测另一个应用是否正在以幻灯片形式运行?

解决方法

我能够在iPad Pro(它支持并排应用程序,而不仅仅是幻灯片)上轻松实现这一功能.这是代码
class ViewController: UIViewController {

    override func viewWillLayoutSubviews() {
        isThisAppFullScreen()
    }

    @discardableResult func isThisAppFullScreen() -> Bool {
        let isFullScreen = UIApplication.shared.keyWindow?.frame == UIScreen.main.bounds
        print("\(#function) - \(isFullScreen)")
        return isFullScreen
    }
}

最终结果是,如果视图是全屏,它将打印“true”,如果它与另一个应用程序共享屏幕,则打印为“false”,并且每次显示,隐藏或调整大小时都会运行此操作.

我制作了一个显示结果的简单视频,这里:

https://www.dropbox.com/s/g8pqboj9jjhnlca/FullScreenOrNotTest.mov?dl=0

问题是旧设备只支持滑动.有了这些,您的应用程序将不再调整大小.相反,它只是辞职正在使用,另一个应用程序正在变得活跃.

在这种情况下,您所能做的就是在AppDelegate中放置逻辑以查找applicationWillResignActive和applicationDidBecomeActive.当您滑过时,您将获得applicationWillResignActive而不是applicationDidEnterBackground.

您可以将此作为一种可能性进行查找,但无法区分滑动和通知从屏幕顶部向下滑动.由于这个原因,它并不理想,但监控应用程序生命周期可能是您可以做的最好的.

猜你在找的iOS相关文章