2017-03-23 96 views
0

如果我手动创建NSWindow编程创建NSWindow缓慢调整

NSWindow* window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 600, 500) 
               styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable 
               backing:NSBackingStoreBuffered defer:YES]; 

...然后调整它是缓慢和laggy相比,从故事板的窗口。为什么?

回答

0

给窗口的内容查看图层:

window.contentView.wantsLayer = YES; 

这是故事板窗口默认:

+0

为什么不使调整_faster_?你会认为这实际上会增加开销。 – matt

+0

当调整非层次支持的窗口大小时,应用程序将其内容重新绘制到由窗口服务器提供的缓冲区中 - 除了最小的窗口外,所有窗口均为兆字节的未压缩图像数据。调整图层背景窗口的大小可能只需更改构成窗口的图层的属性 - 将标题栏背景拉伸至新宽度,设置此按钮的位置等等 - 同时保留其现有内容。 – s4y

+0

使用它对内存使用的影响也很有趣。当窗口尺寸尽可能小时,具有非图层背景窗口的示例应用程序使用14MB,窗口尺寸为我的MBP屏幕尺寸时为53MB。当我使窗口支持层时,无论窗口的大小如何,它都保持在14MB(因为纯灰色背景的每个像素不需要单独表示)。 – s4y