Самое простое решение - определить собственное прозрачное окно.
Когда вы создаете окно, вы указываете специальный BorderlessWindowMask
. Это создает окно, представляющее собой простую прямоугольную область на экране без заголовка, краев и т. Д.
Затем вы настраиваете набор свойств так, чтобы
- окно плавает над другими окнами
- не отвечает на события
- нет тени
- прозрачный фон
и т. Д.
@implementation WatermarkOverlayWindow
- (id)initWithContentRect:(NSRect)contentRect
{
self = [super initWithContentRect:contentRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
if (self!=nil)
{
self.level = NSFloatingWindowLevel;
self.ignoresMouseEvents = YES;
self.releasedWhenClosed = NO;
self.movableByWindowBackground = NO;
self.alphaValue = 1.0f;
self.backgroundColor = NSColor.clearColor;
self.opaque = NO;
self.hasShadow = NO;
}
return self;
}
...
Теперь вы можете добавить полупрозрачные виды в это окно, и эти виды будут отображаться на экране. Кроме того, вы можете разместить непрозрачные виды в этом окне, а затем изменить общее значение alphaValue
окна на значение, меньшее 1.0
.
.