首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HUD NSPanel不太透明

HUD NSPanel不太透明
EN

Stack Overflow用户
提问于 2011-03-27 01:25:04
回答 3查看 1.7K关注 0票数 1

我一直在网上搜索,但我还没有遇到改变平显的透明度(所有面板透明度,包括标题栏)的方法。有可能改变它吗?

Thx

EN

回答 3

Stack Overflow用户

发布于 2011-03-27 01:37:06

您应该能够使用从NSWindow继承的setAlphaValue

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html

代码语言:javascript
复制
[ myPanel setAlphaValue: 0.5 ];
票数 3
EN

Stack Overflow用户

发布于 2011-03-27 12:20:22

这不可能。HUD面板旨在是透明的;它们不允许您更改其不透明度或其基础视图的不透明度。

代码语言:javascript
复制
NSLog(@"opaque before? %@", [hud isOpaque] ? @"YES" : @"NO");
[hud setOpaque:YES];
NSLog(@"opaque after? %@", [hud isOpaque] ? @"YES" : @"NO");

OpaqueHUD[18952:a0b] opaque before? NO
OpaqueHUD[18952:a0b] opaque after? NO

代码语言:javascript
复制
NSLog(@"alpha before: %.2f", [hud alphaValue]);
[hud setAlphaValue:1.0f];
NSLog(@"alpha after: %.2f", [hud alphaValue]);

OpaqueHUD[18952:a0b] alpha before: 1.00
OpaqueHUD[18952:a0b] alpha after: 1.00

代码语言:javascript
复制
NSView * contentView = [hud contentView];    
// In layer-backed mode
NSLog(@"content alpha before: %.2f", [contentView alphaValue]);
[contentView setAlphaValue:1.0];
NSLog(@"content alpha after: %.2f", [contentView alphaValue]);

OpaqueHUD[18952:a0b] content alpha before: 1.00
OpaqueHUD[18952:a0b] content alpha after: 1.00

您必须: 1)在其中放置一个自定义的不透明子视图,并使用半透明的标题栏;b)使用具有常规样式的NSPanel,您可以更改其背景颜色和不透明度,并且可以将其作为常规标题栏使用;或者d) create your very own custom window (链接到文章底部的另一篇文章)。另请参阅这篇关于制作自己的window frame的文章(警告:使用私有API,并且已经有几年的历史了)。

票数 1
EN

Stack Overflow用户

发布于 2013-05-30 17:43:52

这是可能的。您只需通过在面板视图的Core Animation层上设置颜色(包括alpha),以编程方式完成此操作。下面是设置透明度稍低的HUD面板的示例:

代码语言:javascript
复制
view.layer.backgroundColor = [NSColor colorWithSRGBRed:0.2 green: 0.2 blue: 0.2 alpha:0.7].CGColor

请记住,您必须在视图加载后执行此操作,例如。不要在init中设置:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5443946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档