我希望在我的macOS应用程序中显示一个用户可以点击的链接。目前我已经有了以下内容:
Text(url)
.onTapGesture {
if let url = URL(string: self.url) {
NSWorkspace.shared.open(url)
}
}
然而,这并没有为用户提供可点击的URL的视觉指示。我希望文本有下划线,当用户悬停在其上时,光标会变成手形。我该如何做到这一点?
编辑:我在Swift论坛中找到了一个自定义扩展,用于有条件地对视图应用修改器。
extension View {
func `if`<Content: View>(_ conditional: Bool, content: (Self) -> Content) -> some View {
if conditional {
return AnyView(content(self))
} else {
return AnyView(self)
}
}
}
在结合了@Asperi的答案后,现在我有了这个:
@State private var isHoveringOverURL = false
Button(action: {
if let url = URL(string: self.url) {
NSWorkspace.shared.open(url)
}
}) {
Text(self.url)
.font(.caption)
.foregroundColor(Color.blue)
.if(isHoveringOverURL) {
$0.underline()
}
}
.buttonStyle(PlainButtonStyle())
.onHover { inside in
if inside {
self.isHoveringOverURL = true
NSCursor.pointingHand.push()
} else {
self.isHoveringOverURL = false
NSCursor.pop()
}
}