Проблема состоит в том, что Вы не хотите звонить display
, Вы хотите звонить или makeKeyAndOrderFront
или orderFront
в зависимости от того, хотите ли Вы, чтобы окно стало ключевым окном. Необходимо также, вероятно, использовать NSBackingStoreBuffered
.
Этот код создаст Ваше безграничное, синее окно в левой нижней части экрана:
NSRect frame = NSMakeRect(0, 0, 200, 200);
NSWindow* window = [[[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO] autorelease];
[window setBackgroundColor:[NSColor blueColor]];
[window makeKeyAndOrderFront:NSApp];
//Don't forget to assign window to a strong/retaining property!
//Under ARC, not doing so will cause it to disappear immediately;
// without ARC, the window will be leaked.
можно сделать отправителя для makeKeyAndOrderFront
или orderFront
независимо от того, что подходит для ситуации.
Попробуйте
[window makeKeyAndOrderFront:self];
вместо
[window display];
, это, к чему Вы стремитесь?
Это - то, что я придумал меня:
NSRect frame = NSMakeRect(100, 100, 200, 200);
NSUInteger styleMask = NSBorderlessWindowMask;
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask];
NSWindow * window = [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreBuffered defer:false];
[window setBackgroundColor:[NSColor blueColor]];
[window makeKeyAndOrderFront: window];
Это отображает синее окно. Я надеюсь, что это - оптимальный подход.