objective-c - 在屏幕上的某处显示自定义 UI

标签 objective-c cocoa user-interface nsview nswindow

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

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

所以我以编程方式创建了一个 NSWindow,如下 [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered 推迟:否];

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

NSWindow 是使用 [window setOpaque:NO] 设置的,因此它是透明的。

是否有其他方法可以在屏幕上的某个位置显示自定义 UI?

-蒂莫

最佳答案

我认为您想将延迟设置为"is"。引用documentation , defer 属性将立即创建窗口,或者推迟它直到它显示在屏幕上。在这种情况下,您可以在屏幕上显示之前设置所有窗口属性、添加 subview 等。

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

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

关于objective-c - 在屏幕上的某处显示自定义 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368906/

相关文章:

c++ - 是否可以根据眼睛和嘴巴的位置确定面部的偏航、俯仰和滚动? (含图片)

iphone - NSUserDefaults 和已释放实例的问题

cocoa - 如何使用 Cocoa 获取具有给定 ID 的包的 URL,反之亦然?

asp.net - Repeater、ListView、DataList、DataGrid、GridView...选择哪一个?

user-interface - 当 QStandardItemModel itemChanged 发出信号时究竟发生了什么变化

user-interface - Raspberry Pi 3 B 型设置 startx 或 sudo startx 给出 : command not found

objective-c - 如何在 Objective-C std::deque @property 中推回?

ios - 10.00 秒后场景更新失败或 0x000000008badf00d 异常

ios - 在我的 Swift 项目中实现一个 Obj-C 类

cocoa - 更改窗口标题颜色