【发布时间】:2011-07-16 11:19:08
【问题描述】:
我该如何做这样的“通知面板”
【问题讨论】:
-
我认为这是 chrome 桌面通知检查 google chrome API
-
这不是 chrome 通知。这是仪表板中的 wiget。
标签: objective-c macos user-interface xcode4
我该如何做这样的“通知面板”
【问题讨论】:
标签: objective-c macos user-interface xcode4
在界面生成器中制作 HUD 面板?还是一个带纹理的窗口并将其纹理设置为您想要的?
【讨论】:
首先你需要一个不透明的无边框窗口:
NSPanel *window = [[NSPanel alloc] initWithContentRect:windowFrame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
[window setOpaque:NO];
[window setBackgroundColor:[NSColor clearColor]];
推荐使用 NSPanel,因为它只有在需要时才能成为 key(参见setBecomesKeyOnlyIfNeeded)
如果您需要在该窗口中进行一些用户交互,您还需要拥有 NSPanel 的自定义子类并覆盖 canBecomeKeyWindow。
然后您可以在 xib 中布局您的内容视图或创建NSView 的自定义子类来表示您的窗口的内容视图并将其设置为自定义窗口:
[window setContentView:<your content view>];
最后在屏幕上显示窗口:
[window makeKeyAndOrderFront:nil];
如果您希望您的窗口出现在任何其他窗口之上,您可以使用 NSWindow 类的 windowLevel 属性,但要小心并遵循 Apple 人机界面指南 :)
【讨论】: