gpt4 book ai didi

objective-c - 在 Cocoa 中设置窗口的阴影?

转载 作者:行者123 更新时间:2023-12-03 17:05:35 24 4
gpt4 key购买 nike

我创建了一个自定义窗口来覆盖 NSWindow。除了有阴影之外,它工作得很好。我使用 [self setHasShadow:NO] 以编程方式设置阴影,但它仍然存在。但是,如果我检查 [self hasShadow],它会返回 false。

我似乎让阴影消失的唯一方法是在 Interface Builder 中关闭阴影。是的,我意识到这没关系,但我很好奇为什么程序设置不会覆盖 Interface Builder 设置,即使其他程序设置会覆盖。

我不允许发布任何代码,因此请不要要求我这样做。

除了 [self setHasShadow:NO] 之外,我还需要执行其他操作来以编程方式设置窗口的阴影吗?

编辑:awakeFromNib调用[self setHasShadow:NO]会使阴影消失。但是我想直接从构造函数中删除阴影,而不是 awakeFromNib

Mac OSX 雪豹、Xcode 3.2.6

最佳答案

如果您在“awakeFromNib”中调用它或像这样创建无边框窗口,则可以完成此操作:

- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)windowStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag
{

self = [super initWithContentRect: contentRect
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreBuffered
defer: NO];

if(self)
{
[self setHasShadow:NO];

[self setBackgroundColor:[NSColor clearColor]];
[self setOpaque:NO];
}

return self;
}

** 我不知道你是否有标题栏。如果你有你应该使用 styleMask: NSTitledWindowMask 如果没有 NSBorderlessWindowMask

但是如果您不想创建无边框窗口,当您从“awakeFromNib”调用时它也应该可以工作:

-(void)awakeFromNib {
[self setHasShadow:NO];
}

我希望你为你的窗口类(class)选择你自己的书面类(class)?您可以在这里执行此操作:

enter image description here

如果您使用无边框窗口,您还应该编写此代码以禁用阴影:

-(BOOL)hasShadow {
return NO;
}

关于objective-c - 在 Cocoa 中设置窗口的阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9124090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com