vrw*_*wim 3 external-display ios ios13
我有一个需要连接到外部显示器的应用程序,我想在两个屏幕上显示不同的内容(不仅仅是镜像 iPad 屏幕)。
我曾尝试在我的Info.plist:
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
<dict>
<key>UISceneConfigurationName</key>
<string>External Screen</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).ExtSceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Ext</string>
</dict>
</array>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
我还添加了一个开关来UISceneConfiguration为每个屏幕返回正确的值。
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
switch connectingSceneSession.role.rawValue {
case "UIWindowSceneSessionRoleApplication":
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
case "UIWindowSceneSessionRoleExternalDisplay":
return UISceneConfiguration(name: "External Screen", sessionRole: connectingSceneSession.role)
default:
fatalError("No such role, I think? \(connectingSceneSession.role.rawValue)")
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我已经在上面的代码中设置断点configurationForConnecting在我AppDelegate当我连接外部屏幕被调用时,我的应用程序仍只是镜iPad屏幕。
我尝试按照本教程进行操作,但由于 iOS 13screen已弃用 setter,此代码不起作用。
我真的不知道如何在不同的物理屏幕上显示不同的内容,有人能指出我正确的方向吗?
rmaddy 的回答部分正确,configurationForConnecting代码是不必要的。但是我的Info.plist. 错误是我将两种配置都分配给了UIWindowSceneSessionRoleApplication角色。它应该是这样的:
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
<key>UIWindowSceneSessionRoleExternalDisplay</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>External Screen</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).ExtSceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Ext</string>
</dict>
</array>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
外部屏幕配置位于UIWindowSceneSessionRoleExternalDisplay按键下方的位置。
这就像一个魅力。我确实必须将此代码添加到willConnectTo我的中ExtSceneDelegate以使其填满屏幕:
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
windowScene.screen.overscanCompensation = .none
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |