Vit*_*nko 5 nsmenu appkit custom-view nsmenuitem macos-big-sur
macOS 11 Big Sur 在其当前迭代(beta 1 到 beta 6)中有一个错误/功能,这使得很难将 NSMenuItem 与自定义视图一起使用。具体来说,当菜单项突出显示时,项目的自定义视图不会调用 draw(dirtyRect:)。
我设法通过 NSMenu 委托手动调用 draw(dirtyRect:) 方法来绕过该错误:
func menu(_ menu: NSMenu, willHighlight item: NSMenuItem?) {
if #available(OSX 11.0, *) {
// fix for bug when an item with custom view won't be called to draw the highlighting state
menu.items.filter{ $0.tag == 101 }.forEach{ $0.view?.needsDisplay = true }
}
}
Run Code Online (Sandbox Code Playgroud)
但这并不能解开绘制状态的奥秘。MacOS 11 Big Sur 具有新的 UI 外观。菜单项现在以不同的方式突出显示,其内容周围带有圆形框。
我的问题是:我应该手动模拟那个圆形框,还是在新的 App Kit 中有一些默认方式来绘制圆形的菜单项选择?
换句话说,在 macOS 11 Big Sur 中使用自定义视图的 NSmenuItem 的最佳方法是什么?
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |