我目前正在定制主题NSButton
。我发现的每个教程或指南都需要子类NSButtonCell
,甚至the guide from Apple。如何创建一个自定义的主题NSButton而不创建NSButtonCell的子类?
所有这些似乎都已过时,因为NSControl
中的所有单元格方法都是deprecated in Yosemite。我还没有找到任何建议或指导如何使用替代品。
这是唯一的语句,我可以找到:
的NSCell
的逐渐弃用的Mac OS X 10.10采取对 细胞的最终弃用又迈进了一步。不鼓励对控制单元的直接访问,并且允许其的方法将在随后的 版本中被正式弃用。各种单元级API已被提升为各种控制子类,以便提供对重要功能的无细胞访问。 NSLevelIndicator,NSTextField,NSSearchField,NSSlider, 和NSPathControl都具有用于此目的的新属性。基于单元的 现在不推荐使用NSTableViews,而应该使用基于视图的NSTableViews,而应该使用 。基于矩阵的NS浏览器也被弃用,以支持基于项目的接口 。
上NSButton
无话虽然。
NSTextField
支持层支持视图;因此,我在我的NSButton
上尝试了相同的方法,但这没有效果。
var btn = NSButton(NSMakeRect(0, 0, 50, 20))
btn.wantsLayer = true
btn.bordered = false
btn.layer?.backgroundColor = NSColor(calibratedWhite: 0.99, alpha: 1).CGColor
btn.layer?.borderWidth = 1
btn.layer?.borderColor = NSColor(calibratedWhite: 0.81, alpha: 1).CGColor
作为一个小方面说明,如果您愿意,我一直在创建自定义视图 - 然后在其上创建一个隐形按钮。节省很多头痛。 – 2015-02-24 20:48:40
您可以简单地将您的主题作为按钮的背景图像。 – 2015-02-25 06:47:21
@MattyAyOh看起来很容易,但更像是一个黑客。我不认为这是做这件事的目的,我想知道预期的方式。但感谢分享这个窍门。 – Afterlame 2015-03-03 15:33:38