xcode 在MacOS上设置主窗口的aspectRatio

3gtaxfhh  于 2022-11-18  发布在  Mac
关注(0)|答案(1)|浏览(127)

我需要使主窗口保留宽度/高度比时,用户在MacOS上调整它的大小。
我的第一个想法是处理以下通知:

@interface Override_iOS : NSObject
@end

__strong Override_iOS *_instance;
@implementation Override_iOS
+(void)load
{
    NSLog(@"[Override_iOS load]");
    _instance = [Override_iOS new];
    [[NSNotificationCenter defaultCenter] addObserver:_instance
                                            selector:@selector(applicationDidFinishLaunching:)
                                                name:UIApplicationDidFinishLaunchingNotification
                                            object:nil];
}
-(void)applicationDidFinishLaunching:(NSNotification*) notification
{
    NSLog(@"[Override_iOS applicationDidFinishLaunching:%@]", notification);
    //qDebug() << "applicationDidFinishLaunching handler";
}
@end

并尝试设置主窗口的aspectRatio属性,但看起来这段代码在MacOS上不起作用,而只能在iOS上(至少在我的应用程序中)。
有可能在MacOS上做这样的事情吗?
XCode项目中是否有选项?

编辑1

我需要类似this的内容:

- (void)awakeFromNib {
    // Keep the aspect ratio constant at its current value
    [window setAspectRatio:window.frame.size];
}

但不清楚在何处添加此内容。

编辑1

已创建测试应用程序:

bn31dyow

bn31dyow1#

我已经做了很少与MacOS应用程序,但这可能是你正在寻找...
创建一个NSWindow子类:

我的窗口控制器.h

#import <Cocoa/Cocoa.h>

NS_ASSUME_NONNULL_BEGIN

@interface MyWindowController : NSWindowController

@end

NS_ASSUME_NONNULL_END

我的窗口控制器.m

#import "MyWindowController.h"

@interface MyWindowController ()
@end

@implementation MyWindowController

- (void)windowDidLoad {
    [super windowDidLoad];
    // set the aspect ratio here
    [self.window setAspectRatio:NSMakeSize(320.0, 640.0)];
}

@end

然后指定窗口控制器的自定义类:

相关问题