我正在尝试创建一个带有下拉菜单的菜单,每个单元格都有自定义背景。
首先,我尝试改编 NSPopUpButton 但我找不到更改单元格背景图像的方法。使用 setImage: 会将文本滑动到背景的右侧。接下来我停在 NSComboBox 但我找不到更改箭头按钮的方法。有人可以提供帮助和想法吗?接下来的事情是创建一个自定义控制器,但我想使用已经完成的东西。
要自定义 NSComboBox 中的箭头按钮,您需要创建 NSComboBoxCell 的子类并将组合框设置为使用该单元格。如果您已在 IB 中配置了控件,则可以轻松更改单元格的类别。如果您以编程方式创建组合框,请创建 NSComboBox 的子类,覆盖+ (Class)cellClass
并从该方法返回您的自定义 NSComboBoxCell 子类。
现在开始绘图。在你的 NSComboBoxCell 子类中,你需要重写- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
.
(我试过覆盖- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
但它提供的单元格框架没有绘制实际的按钮区域,即它只覆盖了文本输入区域。)
您的定制- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
应该看起来像这样:
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
[super drawWithFrame:cellFrame inView:controlView];
// Constrain to the far right of the provided frame to draw the button
NSRect bounds = NSMakeRect(cellFrame.origin.x + cellFrame.size.width - cellFrame.size.height, cellFrame.origin.y, cellFrame.size.height, cellFrame.size.height);
// Draw your custom button inside the bounds rect
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)