【问题标题】:Resize NSWindow given the new size of the contentView给定 contentView 的新大小,调整 NSWindow 的大小
【发布时间】:2012-08-14 02:12:59
【问题描述】:

给定contentView 的新大小,如何调整NSWindow 的大小?

【问题讨论】:

    标签: macos cocoa nswindow


    【解决方案1】:
    - (void) resizeWindowWithContentSize:(NSSize)contentSize animated:(BOOL)animated {
        CGFloat titleBarHeight = self.window.frame.size.height - ((NSView*)self.window.contentView).frame.size.height;
        CGSize windowSize = CGSizeMake(contentSize.width, contentSize.height + titleBarHeight);
    
        // Optional: keep it centered
        float originX = self.window.frame.origin.x + (self.window.frame.size.width - windowSize.width) / 2;
        float originY = self.window.frame.origin.y + (self.window.frame.size.height - windowSize.height) / 2;
        NSRect windowFrame = CGRectMake(originX, originY, windowSize.width, windowSize.height);
    
        [self.window setFrame:windowFrame display:YES animate:animated];
    }
    

    【讨论】:

      【解决方案2】:

      你可以——

      [window setContentSize:newContentSize]
      

      还有一些方法可以在窗口大小和内容大小之间进行转换:

      • - (NSRect)contentRectForFrameRect:(NSRect)windowFrame
      • - (NSRect)frameRectForContentRect:(NSRect)windowContent

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-29
        • 2015-04-18
        • 2012-10-14
        相关资源
        最近更新 更多