【问题标题】:Show up a custom UI somewhere on screen在屏幕某处显示自定义 UI
【发布时间】:2013-05-04 11:23:52
【问题描述】:

我编写了一个自定义 UI,如下所示:http://www.youtube.com/watch?v=XLsrVVhEs94

目前它仅在 NSView 本身内工作,但我希望它显示在我屏幕的每个角落。

所以我以编程方式创建了一个像 [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; 这样的 NSWindow

这很好用,但有一个问题:每次我打开这个 UI 时,我都能看到刚刚创建的 NSWindow。我可以看到一个具有 NSWindow 大小的阴影,然后它消失了(因为 [NSColor clearColor])。我认为[NSColor clearColor] 对刚刚创建的 NSWindow 的应用太慢了。

NSWindow 是用[window setOpaque:NO] 设置的,所以它是透明的。

还有其他方法可以在我的屏幕上显示自定义 UI 吗?

- 蒂莫

【问题讨论】:

    标签: objective-c cocoa user-interface nsview nswindow


    【解决方案1】:

    我认为您想将延迟设置为“是”。参考documentation,defer 属性将立即创建窗口,或者将其推迟到它显示在屏幕上。在这种情况下,您可以在屏幕上显示之前设置所有窗口属性、添加子视图等。

    NSWindow *myWin = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
    ... do window setup here ...
    [myWin orderFront:self];
    

    此外,如果仍然闪烁,您可以在窗口上调用“显示”,以便它首先将所有子视图绘制到它的缓冲区中(包括您的清除),然后调用 orderFront。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 2015-03-28
      • 2022-07-22
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多