gpt4 book ai didi

ios - 如何在 iOS 13 的不同屏幕上显示不同的内容?

转载 作者:行者123 更新时间:2023-12-01 15:39:26 25 4
gpt4 key购买 nike

我有一个需要连接到外部显示器的应用程序,我想在两个屏幕上显示不同的内容(不仅仅是镜像 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>

我还添加了一个开关来返回正确的 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)")
}
}

而我在上述代码中设置的断点 configurationForConnecting在我的 AppDelegate当我连接外部屏幕时调用,我的应用程序仍然只是镜像 iPad 屏幕。

我试过关注 this tutorial ,但从 iOS 13 开始, screen 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>

外部屏幕配置位于 UIWindowSceneSessionRoleExternalDisplay 下方的位置 key 。

这就像一个魅力。我确实必须将此代码添加到 willConnectTo在我的 ExtSceneDelegate让它填满屏幕:
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
windowScene.screen.overscanCompensation = .none
}

关于ios - 如何在 iOS 13 的不同屏幕上显示不同的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com