目前我使用AppKit的NSWindow来创建窗口。问题是它有很多“默认行为”/限制。例如:miniaturize does not work如果没有标题栏(我也有无边框窗口,角半径等问题)。
据我所知,这种“默认行为”在大多数情况下都很好,但不适用于我的。
Mac OS是否有任何低级窗口API(C / C ++ / Obj-C)?我不需要任何视图,控件等等。我只需要 - 绘制区域和事件源。
答案 0 :(得分:1)
您仍然可以使用NSWindow
并在其之上实现自定义行为。实现此目的的最佳方法是创建自己的NSWindow
子类并覆盖所需的行为。此示例代码创建了一个NSWindow
,该标题没有标题栏,带有圆角并且可以被小型化:
@interface CustomWindow : NSWindow
@end
@implementation CustomWindow
- (instancetype)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)style backing:(NSBackingStoreType)backingStoreType defer:(BOOL)flag
{
NSWindowStyleMask effectiveStyle = style | NSWindowStyleMaskFullSizeContentView;
self = [super initWithContentRect:contentRect styleMask:effectiveStyle backing:backingStoreType defer:NO];
self.titleVisibility = NSWindowTitleHidden;
self.titlebarAppearsTransparent = YES;
self.movableByWindowBackground = YES;
[self standardWindowButton:NSWindowCloseButton].hidden = YES;
[self standardWindowButton:NSWindowZoomButton].hidden = YES;
[self standardWindowButton:NSWindowMiniaturizeButton].hidden = YES;
return self;
}