答案 0 :(得分:0)
我在您的代码中看到cache
一词,并做出了一些猜测:
您似乎正在加载图像,然后对其进行处理并存储经处理的图像以供以后使用。您需要处理很多事情:
首先,在进行图像加载/操作时,请确保正确设置了当前外观。除了drawRect:
和其他一些方法之外,您总是需要做类似以下的舞蹈:
NSAppearance * savedAppearance = [NSAppearance currentAppearance];
[NSAppearance setCurrentAppearance:someView.effectiveAppearance];
// Do your image/color/drawing stuff.
[NSAppearance setCurrentAppearance:savedAppearance];
请注意,外观是“范围内”的特定视图!在同一视图层次结构中,您可以具有不同的外观。
您需要覆盖viewDidChangeEffectiveAppearance
的{{1}}或KVO查看视图的NSView
,以获取有关外观更改的通知并做出相应的反应(重新创建图标)。