可可 – 如何实现HUD风格的窗口,如地址簿的“大型显示”

可可 – 如何实现HUD风格的窗口,如地址簿的“大型显示”,第1张

概述包括内置地址簿在内的多个应用程序使用半透明的HUD窗口,并带有大阴影文本.我想在我的 Cocoa Mac应用程序中实现一个类似的窗口. 在某处可以自由实现这种窗口吗? 如果没有,实施它的最佳方法是什么? 这是一个展示如何 *** 作的示例项目: http://github.com/NSGod/BlackBorderlessWindow 基本上,您需要创建一个无边界的NSWindow子类.最简单的方法是在n 包括内置地址簿在内的多个应用程序使用半透明的HUD窗口,并带有大阴影文本.我想在我的 Cocoa Mac应用程序中实现一个类似的窗口.

在某处可以自由实现这种窗口吗?

如果没有,实施它的最佳方法是什么?

解决方法 这是一个展示如何 *** 作的示例项目:

http://github.com/NSGod/BlackBorderlessWindow

基本上,您需要创建一个无边界的NSWindow子类.最简单的方法是在nib文件中设置窗口大小和排列,然后将其类设置为自定义子类.因此,虽然它仍然看起来像Interface Builder中的普通窗口,但在运行时它将显示为您需要它.

@implementation MDborderlessWindow- (ID)initWithContentRect:(NSRect)contentRect            styleMask:(NSUInteger)windowstyle              backing:(NSbackingStoreType)bufferingType                defer:(BOol)deferCreation {    if (self = [super initWithContentRect:contentRect                            styleMask:NSborderlessWindowMask                              backing:NSbackingStoreBuffered defer:deferCreation]) {            [self setAlphaValue:0.75];            [self setopaque:NO];            [self setExcludedFromwindowsMenu:NO];    }    return self;}

Alpha值将使窗口半透明.

此外,您可以创建一个自定义NSVIEw子类,它将绘制一个圆角矩形:

@implementation MDBlacktransparentVIEw- (ID)initWithFrame:(NSRect)frame {    if (self = [super initWithFrame:frame]) {    }    return self;}- (voID)drawRect:(NSRect)frame {    NSBezIErPath *path = [NSBezIErPath bezIErPathWithRoundedRect:frame                                    xRadius:6.0 yRadius:6.0];    [[NScolor blackcolor] set];    [path fill];}@end

与窗口一样,您只需将窗口的contentVIEw类设置为自定义NSVIEw子类. (使用大纲视图模式并单击显示三角形以在nib文件中的窗口图标内显示嵌套的NSVIEw).同样,虽然视图在Interface Builder中看起来很普通,但在运行时它看起来还不错.

然后只需将NSTextFIEld放在视图顶部并相应地设置文本.

请注意,通常,无边框窗口不易使用(例如,如果您希望能够拖动窗口,则需要自己添加该功能).例如,Apple提供了一些关于如何允许拖动的示例代码.

总结

以上是内存溢出为你收集整理的可可 – 如何实现HUD风格的窗口,如地址簿的“大型显示”全部内容,希望文章能够帮你解决可可 – 如何实现HUD风格的窗口,如地址簿的“大型显示”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1026599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存