gpt4 book ai didi

ios - 是否可以在 Mac Catalyst 中使用全屏?

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

将游戏移植到 macOS Catalyst,但窗口很小。是否可以全屏启动?

最佳答案

可以全屏启动。
方法 #1(从 Mac Catalyst 应用程序使用 AppKit 的更通用方式)
要切换到全屏,您需要使用 AppKit 和 NSApplication 类,但目前这在 Mac Catalyst 应用程序中不可用。但是,您可以从另一个插件包访问它。这就是您执行此操作并在应用启动时切换到全屏的方式:
第 1 步。您需要在您的应用程序中创建一个新的 mac 捆绑目标。单击文件 -> 新建 -> 目标 -> macOS -> 捆绑包,然后单击下一步按钮。输入产品名称,例如 MacBundle,然后单击完成按钮。
第 2 步。在您的项目中选择新创建的组 MacBundle,然后单击 File -> New -> macOS -> Cocoa Class,然后单击按钮 Next。输入类名,例如 MacApp,它是 NSObject 的子类,并将语言设置为 Objective-C。单击下一步,确保选择了 MacBundle 目标,然后单击按钮创建。
第三步。像这样编辑 MacApp.h:

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface MacApp : NSObject

+ (void)toggleFullScreen;

@end

NS_ASSUME_NONNULL_END
第 4 步。像这样编辑 MacApp.m:
#import "MacApp.h"

@implementation MacApp

+ (void)toggleFullScreen {
[[[[NSApplication sharedApplication] windows] firstObject] toggleFullScreen:nil];
}

@end
第 5 步。单击您的项目并在 Targets 部分中选择您的主应用程序目标(与 iOS 相同)
第 6 步。在常规选项卡中向下滚动到框架、库和嵌入内容部分,然后单击 + 按钮。在选择框架的新弹出窗口中,选择 MacBundle.bundle 并单击按钮添加以将此包嵌入到您的主应用程序中。
第 7 步。现在,您可以从主 iOS 代码的 MacBundle 中的 MacApp 类调用 toggleFullScreen 方法。为了让它工作,你可以从你的应用程序中出现的第一个 UIViewController 中的 viewDidAppear 调用一次。你可以这样称呼它:
static var needsFullScreen = true

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

if Self.needsFullScreen {
Bundle(path: Bundle.main.builtInPlugInsPath?.appending("/MacBundle.bundle") ?? "")?.load()
let macApp = NSClassFromString("MacApp") as? NSObjectProtocol
macApp?.perform(NSSelectorFromString("toggleFullScreen"))
Self.needsFullScreen = false
}
}
或者,您可以使用该 toggleFullScreen 方法创建一个协议(protocol)。
之后,当您启动应用程序时,它将自动切换到全屏。
方法#2(对于这种特定情况,不太通用但速度更快)
如果您不打算使用其他 AppKit 的东西,那么对于上一个方法中显示的这个 toggleFullScreen 调用,您可以从出现在您的应用程序中的第一个 UIViewController 的 viewDidAppear 中调用它,而无需使用运行时函数的插件包,如下所示:
static var needsFullScreen = true

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

if Self.needsFullScreen {
(NSClassFromString("NSApplication")?.value(forKeyPath: "sharedApplication.windows") as? [AnyObject])?.first?.perform(Selector("toggleFullScreen:"))
Self.needsFullScreen = false
}
}

关于ios - 是否可以在 Mac Catalyst 中使用全屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58526250/

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