自定义NSButton和NSButtonCell

时间:2010-12-09 09:01:40

标签: objective-c cocoa nsbutton nsbuttoncell

我正在尝试创建自定义按钮外观。

根据我收集的内容,NSButtonCell执行绘图,所以我实际上应该覆盖它。

但问题是,我的CustomButton类还有其他内容,如NSImagemIsMouseOver等。目前,绘图是在CustomButton类中完成的,但我想将其移到单元格中。

问题是,无论如何我可以从customButtonCell类访问customButton类中的图像,以便我可以使用[image drawInRect:...]吗?

此致 韩

2 个答案:

答案 0 :(得分:1)

通常的方法是将数据存储在NSCell子类中。基本单元类甚至具有 - (id)图像属性,因此,在查询图像时,您的按钮类应调用[[self cell] image]

实际上,由于你是NSButton的子类,它包含你需要的所有东西,只需覆盖单元格的绘图方法。如果你需要一个额外的属性 - 在单元格中定义它,包装在控件中。

答案 1 :(得分:1)

您的单元格的drawWithFrame:(NSRect)frame inView:(NSView *)controlView方法包含对正在绘制的NSView的引用,您可以从中访问该视图的属性(例如图像)。