인디노트

macOS 에서 objective c 로 windowDidLoad 이벤트 처리시 현재 윈도우의 위치를 화면의 중앙으로 이동하는 방법 본문

소스 팁/Objective C, Swift, iOS, macOS

macOS 에서 objective c 로 windowDidLoad 이벤트 처리시 현재 윈도우의 위치를 화면의 중앙으로 이동하는 방법

인디개발자 2023. 4. 5. 10:30
- (void)windowDidLoad {
    [super windowDidLoad];
    
    // 현재 윈도우의 위치와 크기를 가져옵니다.
    NSWindow *window = [self window];
    NSRect windowFrame = [window frame];
    
    // 화면의 중앙 위치를 계산합니다.
    NSRect screenFrame = [[NSScreen mainScreen] visibleFrame];
    CGFloat centerX = NSMidX(screenFrame);
    CGFloat centerY = NSMidY(screenFrame);
    
    // 윈도우를 중앙으로 이동시킵니다.
    windowFrame.origin.x = centerX - windowFrame.size.width / 2;
    windowFrame.origin.y = centerY - windowFrame.size.height / 2;
    [window setFrame:windowFrame display:YES];
}

위 코드에서는 windowDidLoad 메서드에서 window 객체를 가져와서 현재 윈도우의 위치와 크기를 계산한 후, 화면 중앙 위치를 계산하여 윈도우를 이동시키고 있습니다.

[[NSScreen mainScreen] visibleFrame] 메서드를 사용하여 현재 화면의 크기를 가져오고, NSMidX 및 NSMidY 함수를 사용하여 화면 중앙의 좌표를 계산합니다.

그리고 윈도우를 중앙으로 이동시키기 위해 NSWindow 객체의 setFrame:display: 메서드를 사용합니다. 이 메서드는 윈도우의 위치와 크기를 설정하고 화면에 표시하도록 지시합니다.

반응형
Comments