setOpaque:NO vs setBackgroundColor:[NSColor clearColor]

Eim*_*tas 4 cocoa objective-c nswindow

我正在通过子类化NSWindow来完成一个关于使用cocoa绘制自定义[形状]窗口的教程.

该教程指出初始化开发人员应该执行以下操作:

[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
Run Code Online (Sandbox Code Playgroud)

所以我想知道这两个消息之间的差异是什么,为什么它们都需要,因为它们的结果是相同的.

参考:教程可以在这里找到.

Ira*_*oke 9

我想第一条消息是必需的,因为绘图系统需要知道是否应该更新更新后面的视图.例如,如果另一个应用程序(窗口后面)的窗口更新(比如文本出现等),窗口系统通常不需要重绘它,但由于窗口是透明的,所以在这种情况下.

  • +1.在非透明窗口中,您可以使用`[self setOpaque:YES];`来加速绘图. (2认同)