我创建了一个无边框的窗口,我想移除它的阴影。
这是我的init窗口代码:
- (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
,但是什么都没有发生,阴影仍然显示。
如何去除阴影?
发布于 2011-07-08 14:04:10
首先,您应该将调用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方法中的设置。
然后,解决方案是确保窗口没有在界面生成器中选中阴影外观复选框,或者在‑awakeFromNib
中而不是在初始化程序中调用[self setHasShadow:NO]
。
‑awakeFromNib
总是在加载nib文件并连接所有插座之后调用。
https://stackoverflow.com/questions/6625477
复制相似问题