Серая граница вокруг вида при использовании маски NSBorderlessWindowMask
У меня точно такая же проблема, как и в этом вопросе:
Серая граница при использовании NSBorderlessWindowMask
Однако принятый ответ (как и в комментариях) об удалении тени окна, похоже, не работает, по крайней мере, на Lion.Я подкласс NSWindow
и создал окно без границ следующим образом:
-(id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {
self = [super initWithContentRect:contentRect
styleMask:(NSBorderlessWindowMask | NSResizableWindowMask)
backing:bufferingType
defer:flag];
[self setMovableByWindowBackground:YES];
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
[self setHasShadow:YES];
[self setLevel:NSMainMenuWindowLevel];
return self;
}
Обратите внимание, что это приложение будет работать только на Lion (поэтому NSResizableWindowMask
не изменяет внешний вид). Я попытался отключить тень, и ... переключая многочисленные настройки для моего окна, но я, кажется, не могу удалить эту серую границу:
Нигде в моем коде я не добавляю границу. У меня просто есть NSSplitView
, добавленный в Interface Builder в окне. Во время выполнения я добавляю цветной вид в качестве подвида в левую панель разделенного вида, полностью заполняя границы левого разделенного вида.
Edit: это происходит даже при использовании простого NSView
, даже не разделенного представления.
TL;DR
: Почему мой NSView
имеет серая кайма вокруг него?
1 ответ:
Ок понял. чтобы удалить тень, просто добавьте это в свой подкласс
NSWindow
:- (BOOL)hasShadow { return NO; }
И чтобы удалить границу, вам нужно знать, что эта граница исходит из вида, а не из окна (так же, как вы сказали это в своем редактировании). Таким образом, вы должны отключить границу для представления с помощью этого кода:
[myview setBorderType:NSNoBorder];