使用 iOS Swift 检测外部屏幕

Posted

技术标签:

【中文标题】使用 iOS Swift 检测外部屏幕【英文标题】:Detecting External Screen with iOS Swift 【发布时间】:2018-05-08 22:24:48 【问题描述】:

我正在尝试使用 ios Swift 检测外部显示器。第二台显示器与 Lightning 数字 AV 适配器连接。我已经导入了 UIKIt。当我在screens.count下面运行代码时,即使我在第二个屏幕已经附加并镜像的情况下启动应用程序,计数也只会给我1。

    override func viewDidLoad() 
    super.viewDidLoad()

    // Initialize an external screen if one is present
    let screens = UIScreen.screens
    print(screens.count)

    txtDisplay.text = String(screens.count)
    if screens.count > 1 
        print("A second screen has been detected")
        //An external screen is available. Get the first screen available
        //self.initializeExternalScreen(externalScreen: screens[1] as UIScreen)
    



我已经加载了声称具有此功能的演示应用程序,但我得到了相同的结果。任何想法如何使用 Swift 检测第二个显示器?

谢谢

【问题讨论】:

【参考方案1】:

我发现 UIScreen.screens.count 仅在我设置通知时才会确认外部第二个屏幕。一旦我在 NotificationCenter 中设置了观察者,我终于将 'UIScreen.screens.count' 设置为 == 2。然后我可以将视图分配给 UIScreen.screens1

此页面有详细信息: http://tutorials.tinyappco.com/Swift/AdditionalScreen

【讨论】:

镜像屏幕不会通知您 可能是这样。对我来说重要的是它使我能够在 UIScreens.screens 计数中包含外部显示器,以便我可以对其进行测试,然后在外部屏幕上显示内容。感谢您的帮助。【参考方案2】:

镜像屏幕不在屏幕数组中表示。而是使用主屏幕 mirroredScreen 属性

更新:

let mirrored = UIScreen.main.mirrored
self.initializeExternal(external: mirrored)

【讨论】:

感谢您的提示。知道如何测试镜像屏幕吗?我只能得到零。它可能需要在不为零之前进行初始化。镜像屏幕上的文档很薄。下面的代码尽可能接近。 var 镜像:UIScreen! self.initializeExternalScreen(externalScreen: 镜像为 UIScreen) @jumpwire 请接受答案,如果它适合您的问题

以上是关于使用 iOS Swift 检测外部屏幕的主要内容,如果未能解决你的问题,请参考以下文章

iOS 是不是提供任何功能来检测外部屏幕是“硬连线”电视输出/HDMI 还是“网络”Airplay 显示器/设备?

【iOS】Swift4.0 横竖屏监测、动态切换

IOS iMessage扩展截图检测

iOS Swift 检测图像旋转

IOS SWIFT:你已经授权了facebook ios

Xcode Swift - 检测屏幕上颜色的触摸