我想创建一个带有每个单元格的自定义背景下拉菜单的菜单。 首先,我尝试改编NSPopUpButton,但我找不到更改单元格背景图像的方法。使用setImage:会将文本滑动到背景的右侧。接下来,我停在NSComboBox,但我找不到方法来更改箭头按钮。有人可以帮助和想法?接下来的事情是创建一个自定义控制器,但我想使用已经完成的事情。NSPopUpButton,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
}
我不确定是否正确理解您的问题。如果你想在你的用户界面的任何位置显示一个菜单:NSMenu提供了方便的方法来实现它。查看+ popUpContextMenu:withEvent:forView:
,+ popUpContextMenu:withEvent:forView:withFont:
和– popUpMenuPositioningItem:atLocation:inView:
的文档,找到最适合您需求的文档。就像那样,你可以在你喜欢的任何位置显示菜单。
如果您不想在菜单中显示任意内容,请查看NSMenuItem
的文档- setView:
。这使您可以在菜单中插入视图。再加上上面显示菜单的方法,您可以为“PopOver”需求创建各种解决方案。
- 1. 维护子菜单中NSPopUpButton
- 2. 如何设置NSPopUpButton的菜单位置?
- 3. NSPopUpButton文字重叠菜单图像
- 4. 类似于Chrome的菜单显示
- 5. JavaFX 2.0激活类似MenuItem的菜单
- 6. 类似功能的菜单块插件
- 7. 建立类似iPod的菜单
- 8. 寻找类似Bonobos.com的菜单系统
- 9. 类似jQuery的菜单系统
- 10. 类似于功能区的菜单栏
- 11. 创建类似于iOS7的菜单选择菜单
- 12. 如何使菜单类似于linkedin.com上的菜单
- 13. Silverlight 4中的菜单控件类似于WPF菜单
- 14. NSComboBox对象类型
- 15. 如何在NSPopUpButton的菜单中绑定基于视图的NSMenuItem?
- 16. 如何在NSComboBox的Popup菜单中对文本进行着色?
- 17. 如何制作具有图像和文本菜单的NSPopupButton?
- 18. 子类的NSView子类(的NSTextField,NSButton,NSPopUpButton)
- 19. jQuery的拖放创建菜单(类似于WordPress的自定义菜单)
- 20. 如何在用户选择菜单项后保持NSPopUpButton打开?
- 21. 以编程方式将菜单+项目添加到NSPopupButton
- 22. 如何在WPF中创建类似于Windows 7开始菜单的菜单
- 23. 创建iPhone弹出菜单类似于邮件应用程序菜单
- 24. NSCombobox,NSTimer
- 25. 有没有类似于jsfiddle.net上的菜单的开源?
- 26. jQuery的:菜单栏类似“标签”,但没有改变的div
- 27. 下拉菜单的行为与原生菜单栏相似
- 28. NSProgressIndicator的NSPopupButton
- 29. 绑定的NSPopUpButton
- 30. 创建一个类似系统默认菜单的窗口?