我在 Swift/Cocoa 中创建了一个主菜单,其中包含替换多个菜单项的自定义 View 。自定义 View 是从单独的 NSView
class/xib 文件加载的。此自定义 View 内的约束包含一个通过 Interface Builder 居中的标签,相应地:
菜单项的替换已经完成,如下所示:
@IBOutlet weak var statusMenu: NSMenu!
@IBOutlet weak var tabviewRoom: tabviewMenuRoom!
@IBOutlet weak var stackScenes: NSStackView!
@IBOutlet weak var menuRoomsHeader: viewMenuHeaderRooms!
...
if let itemRoomsHeader = statusMenu.item(withIdentifier: "rooms_header") {
menuRoomsHeader.title = "Rooms"
itemRoomsHeader.view = menuRoomsHeader
itemRoomsHeader.target = self
}
但是,由于缺少对 View 的一些约束,菜单中的最终结果如下所示(NSView
未拉伸(stretch)到菜单项的宽度):
我想知道如何向菜单项添加约束以保持文本居中(=自定义 NSView
的宽度显示为红色,NSMenuItem
的宽度显示为绿色)。
最佳答案
确保您已为容器 View 禁用“将蒙版转换为约束”。然后,当您在 Interface Builder 中调整 View 大小时,检查布局的行为是否符合预期。
您还可以在运行时查看事件约束,方法是打开菜单,然后单击 Xcode 中的“调试 View 层次结构”并在调试导航器中选择 NSCarbonMenuWindow
。
关于swift - 对已被自定义 View 替换的 NSMenuItem 应用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53126361/