关闭/最小化/全屏居中处理(仿Mac QQ),效果如下

在WindowController中添加以下代码,直接复制到控制器并修改控制器名称就可以了。
 @interface FSWindowCtl ()<NSWindowDelegate> 	 @end
  @implementation FSWindowCtl
  - (void)windowDidLoad {     [super windowDidLoad];     [self settingWindowStyle]; }
  - (void)settingWindowStyle {     self.window.titlebarAppearsTransparent = YES;     self.window.titleVisibility = NSWindowTitleHidden;     self.window.styleMask = NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskTitled | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskFullSizeContentView;     [self.window setMovableByWindowBackground:YES];     [self updateTitleBarOfWindow:NO]; }
 
  - (void)updateTitleBarOfWindow:(BOOL)fullScreen {     CGFloat kTitlebarH = 54.0;     CGFloat kFullScreenButtonYOrigin = 3.0;     NSRect windowFrame = self.window.frame;     NSView *titlebarContainerView = [self.window standardWindowButton:NSWindowCloseButton].superview.superview;     NSRect titlebarContainerFrame = titlebarContainerView.frame;     titlebarContainerFrame.origin.y = windowFrame.size.height - kTitlebarH;     titlebarContainerFrame.size.height = (CGFloat)kTitlebarH;     titlebarContainerView.frame = titlebarContainerFrame;          CGFloat buttonX = 12.0;     NSButton *closeBtn = [self.window standardWindowButton:NSWindowCloseButton];     NSButton *minimizeBtn = [self.window standardWindowButton:NSWindowMiniaturizeButton];     NSButton *zoomBtn = [self.window standardWindowButton:NSWindowZoomButton];          for (NSButton *buttonView in @[closeBtn, minimizeBtn, zoomBtn]) {         NSRect buttonFrame = buttonView.frame;         buttonFrame.origin.y = fullScreen ? kFullScreenButtonYOrigin : round((kTitlebarH - buttonFrame.size.height)/2.0);         buttonFrame.origin.x = (CGFloat)buttonX;         buttonX = buttonFrame.size.width + buttonX + 6;         [buttonView setFrameOrigin:buttonFrame.origin];     } }
  #pragma mark - NSWindowDelegate - (void)windowDidEnterFullScreen:(NSNotification *)notification {     [self updateTitleBarOfWindow:YES]; }
  - (void)windowDidExitFullScreen:(NSNotification *)notification {     [self updateTitleBarOfWindow:NO]; }
  - (void)windowDidResize:(NSNotification *)notification {     [self updateTitleBarOfWindow:NO]; }
  @end
 
  |