【问题标题】:Content displayed on a connected screen is not showed in full screen in Swift连接屏幕上显示的内容在 Swift 中未全屏显示
【发布时间】:2020-02-12 23:35:23
【问题描述】:

在通过 hdmi 线连接到电视或显示器的真实设备中测试我的应用程序时,连接屏幕中显示的内容不会全屏显示。

在具有真实连接屏幕的真实设备中:

我已经在 iOS 模拟器中使用模拟的连接屏幕测试了我的应用,一切正常。

在 iOS 模拟器中:

我已经在不同类型的屏幕上测试了我的应用,并且在使用真实设备时,连接屏幕中的内容从未全屏显示。

我还测试了this example 具有相同的结果。

这是代码的一部分:

if UIScreen.screens.count > 1 {
    let secondScreen = UIScreen.screens[1]
    secondWindow = UIWindow(frame: secondScreen.bounds)
    secondWindow.rootViewController = UIViewController()
    secondWindow.screen = secondScreen

    let secondScreenView = UIView(frame: secondWindow.frame)
    secondWindow.addSubview(secondScreenView)
    secondWindow.isHidden = false

    secondScreenView.backgroundColor = .purple

    let imageView = UIImageView(frame: secondScreenView.bounds)
    imageView.image = UIImage(data: recursoTipoRecurso.recurso.contenido as Data)
    imageView.contentMode = .scaleToFill

    secondScreenView.addSubview(imageView)
}

如上图所示,显示器屏幕边框和我设置的内容之间有一个空间。

我做错了什么?

【问题讨论】:

  • 我猜这是你的显示器的问题,而不是代码...
  • 我已经在不同的显示器和电视上尝试过我的应用程序,但我都遇到了同样的问题。 Keynote 应用实际上以全屏模式显示内容。
  • 因此您可以尝试使用 superView 的约束而不是安全区域的约束来固定视图的约束。
  • @KazMiller - 您在 viewdidload 或其他地方调用此代码的位置
  • 这是因为不同设备的屏幕比例不同,会相应改变。您可以更改图像的竞争模式以覆盖全屏,但它会使图像拉伸

标签: ios swift


【解决方案1】:

这不是应用程序/代码的问题,而是屏幕比例的问题。将其连接到外部屏幕时,显示器保持 iPad 屏幕比例。唯一的方法是通过拉伸来手动更改显示器本身的内容大小。 希望对您有所帮助!

【讨论】:

  • 但在使用 Keynote 应用程序或播放视频时,内容会全屏显示,而无需更改显示器 sctetch
【解决方案2】:

将您的第二个屏幕设置为overscanCompensation.none 肯定会有所帮助。它对我有用。

let secondScreen = UIScreen.screens[1]
secondScreen.overscanCompensation = .none

Apple Dev Definition

【讨论】:

  • 谢谢!这就是阻止我到达屏幕边缘的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多