MST

星途 面试题库

面试题:Objective-C在Mac OS窗口管理中如何设置窗口的初始位置和大小

在Objective - C开发Mac OS应用时,描述如何使用相关类和方法来设置一个窗口的初始显示位置(x, y坐标)以及大小(宽度和高度)。请写出关键代码片段并解释主要步骤。
35.3万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 关键类与方法
    • 在Objective - C开发Mac OS应用时,主要使用NSWindow类来操作窗口。NSWindow类提供了设置窗口位置和大小的方法。
  2. 关键代码片段
#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (nonatomic, strong) NSWindow *window;

@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // 创建窗口
    NSRect windowRect = NSMakeRect(100, 100, 400, 300);
    self.window = [[NSWindow alloc] initWithContentRect:windowRect
                                              styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable
                                                backing:NSBackingStoreBuffered
                                                  defer:NO];
    // 设置窗口标题
    [self.window setTitle:@"My Window"];
    // 显示窗口
    [self.window makeKeyAndOrderFront:nil];
}

@end
  1. 主要步骤解释
    • 创建窗口矩形
      • NSRect windowRect = NSMakeRect(100, 100, 400, 300); 这行代码使用NSMakeRect函数创建了一个NSRect结构体,该结构体定义了窗口的位置和大小。NSMakeRect函数的四个参数分别是窗口左上角的x坐标(这里是100)、y坐标(这里是100)、宽度(这里是400)和高度(这里是300)。
    • 初始化窗口
      • self.window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable backing:NSBackingStoreBuffered defer:NO]; 使用initWithContentRect:styleMask:backing:defer:方法初始化窗口。contentRect参数传入前面创建的窗口矩形,styleMask设置窗口的样式,包括有标题、可关闭、可最小化、可调整大小等,backing指定窗口的缓冲区类型,defer表示是否延迟创建窗口,这里设置为NO即立即创建。
    • 设置窗口标题与显示窗口
      • [self.window setTitle:@"My Window"]; 设置窗口的标题。
      • [self.window makeKeyAndOrderFront:nil]; 使窗口成为关键窗口并显示在屏幕最前端。