【问题标题】:Floating window without titlebar won't go to the top of the screen没有标题栏的浮动窗口不会转到屏幕顶部
【发布时间】:2020-09-27 14:10:00
【问题描述】:

我的 Mac 应用程序使用没有标题栏的浮动窗口,可以通过拖动来移动。

NSRect frame = NSMakeRect(500, 950, 600, 100);
        
self.lbWindow  = [[lbCustomWindow alloc] initWithContentRect:frame
                       styleMask:NSWindowStyleMaskBorderless
                       backing:NSBackingStoreBuffered
                       defer:NO];
        
[self.lbWindow setOpaque:NO];
[self.lbWindow setBackgroundColor:[NSColor clearColor]];
[self.lbWindow setHasShadow:YES];
[self.lbWindow setReleasedWhenClosed:FALSE];

但是,这个窗口不能被放置(例如在那个位置创建),或移动(通过拖动)到顶部菜单栏的正下方,它只能到达它下面大约 30px - 它正好是普通窗口标题栏 - 基本上,窗口似乎受到垂直限制好像窗口有一个标题栏。

(Y 坐标“950”是我可以放置窗口的最高值,导致下图。)

我希望它看起来好像没有标题栏,并且能够将它放置在窗口的顶部边缘就在菜单栏的下方。

(我没有包含自定义窗口的实现,但是除了拖动支持之外并没有太多的东西——而且它不是导致约束的拖动,当您最初以编程方式定位窗口时仍然适用。)

想法?

【问题讨论】:

    标签: cocoa nswindow


    【解决方案1】:

    好的,在发布之后我就发现了原因(典型)。 :)

    (透明)窗口创建正常,但是当我向其中添加子视图时,由于某种原因(重构的旧代码),它被添加了一个低于窗口顶部的标题栏高度。

    (当你使窗口不透明时很明显)。

    所以只需要重新定位视图就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2016-08-09
      • 2016-12-23
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多