0

我注意到“股票”Aqua 单选按钮和复选框图像是使用正常NSButtonCell方法绘制的,-drawImage:withFrame:inView:.

在我的NSButtonCell子类中绘图时,我想区分正在传递的库存图像和开发人员提供的图像。如果图像是自定义图像,我希望使用它,但如果它是默认界面图像,我想自己处理绘图。那有意义吗?

无论如何,我已经编写了一个方法来检查图像是否是默认界面图像,它看起来像这样:

- (BOOL)isAquaInterfaceImage:(NSImage *)image
{
    return [image.representations[0] isKindOfClass:NSClassFromString(@"NSCoreUIImageRep")];
}

由于 Apple 提供的图像使用私有类,因此我使用该NSClassFromString()函数在运行时为我输出它,因此我不会收到一堆编译器警告。这种技术效果很好,有了它,我可以确定是否应该绘制传递给绘图方法的图像。问题是,我不希望仅仅因为我引用了一个私有类而开发人员的应用程序不被 Mac App Store 接受。

我对这一切都不熟悉,所以我不确定苹果的规则有多“严格”。如果有人知道 Apple 在使用私有类或框架的名称方面的界限,我很想知道。谢谢!

4

0 回答 0