自定义工具提示 (CustomToolTip)

CustomToolTip 是一个用于 macOS Cocoa 应用程序的 Swift 包,它允许你添加工具提示,这些工具提示可以使用任何类型的 NSView 作为其内容,而无需子类化或包装你现有的视图。 这意味着它可以很容易地集成到现有项目中。

Screenshot

项目设置

CustomToolTip 在 NSView 上提供了一个扩展,该扩展处理其余的事情。 你可以专注于创建你的工具提示内容,并使用扩展添加到 NSViewcustomToolTip 属性将其附加到你的视图。

你不需要对任何东西进行子类化。 你不需要将视图嵌套在特殊的工具提示视图中。 你甚至不需要更改故事板中的任何内容。

如何添加自定义工具提示

在你想要添加自定义工具提示的源文件中,

import CustomToolTip

然后,添加工具提示就像这样简单

myControl.customToolTip = myCustomTipContentView

其中 myControl 是你想要附加自定义工具提示的视图,而 myCustomTipContentView 是你想要用作工具提示内容的任何 NSView

你的工具提示视图的唯一技术要求是,在添加它之前,它的 frame size 应该被正确设置,因为工具提示将根据你的内容视图的 frame 调整其大小。

你的工具提示内容有一些设计上的考虑,但这些很大程度上取决于品味、你的应用程序的外观和感觉,以及当前对良好设计的思考。 我唯一要提出的建议是,保持你的工具提示相对较小,并避免在其中使用任何看起来用户应该与之交互的视图,因为……它是一个工具提示。 当用户移动鼠标时,它会消失。

你可以指定自定义工具提示内容视图和工具提示窗口框架之间的边距

myControl.customToolTipMargins = CGSize(width: 5, height: 5)

默认情况下,CustomToolTip 使用当前系统窗口背景颜色作为工具提示的背景,但你可以使用任何你喜欢的颜色

myControl.customToolTipBackgroundColor = NSColor.blue

你还可以设置在你不为每个视图指定它们时使用的默认值

CustomToolTip.defaultMargins = CGSize(width: 2, height: 2)
CustomToolTip.defaultBackColor = .controlColor

便利方法

对于一些特别常见的情况,CustomToolTip 提供了便利方法,这些方法会为你创建视图。

如果你只想使用特定字体添加文本工具提示,你可以这样做

myControl.addCustomToolTip(from: "This is my tool tip", with: NSFont(name: "Chalkboard", size: 20))

如果你有一个 NSAttributedString 你想在工具提示中显示,你可以使用它

myControl.addCustomToolTip(from: myAttributedString)

要使用 NSImage 作为内容

myControl.addCustomToolTip(from: myToolTipImage, scaling: .toFit(width: 50, height: 50))