gpt4 book ai didi

cocoa - cocoa 中的无边框窗口和阴影

转载 作者:行者123 更新时间:2023-12-03 16:33:04 25 4
gpt4 key购买 nike

我创建了一个无边框窗口,我想删除它的阴影。

这是我的初始化窗口代码:

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

if (![super initWithContentRect: contentRect
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreBuffered
defer: NO]) return nil;

[self setHasShadow:NO];
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
[self setAcceptsMouseMovedEvents:YES];
return self;
}

如您所见,我使用了 setHasShadow:NO 但没有任何反应,阴影仍然显示。

如何去除阴影?

最佳答案

嗯,一方面,您应该将对 super 的调用结果分配给 self:

self = [super initWithContentRect: contentRect
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreBuffered
defer: NO];
if(self)
{
//continue with initialisation
}
return self;

此外,如果窗口是从 Nib 加载的,则它可能具有在 Interface Builder 中指定的阴影。由于 nib 中的设置是在调用 init 方法后加载的,因此它们可能会覆盖 init 方法中的设置。

解决方案是确保窗口没有在 Interface Builder 中选中“阴影外观”复选框,或者在 -awakeFromNib 中调用 [self setHasShadow:NO] > 而不是在初始化程序中。

-awakeFromNib 始终在加载 nib 文件并连接所有 socket 后调用。

关于cocoa - cocoa 中的无边框窗口和阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625477/

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