试图实现类似于tinder的条款和条件,但是我无法弄清楚如何在快速UI中使条款和隐私政策可点击
通过创建帐户或登录,您同意我们的条款和隐私权政策
var body: some View {
Text(Constants.privacyText)
.applyCustomLabelTextProperties(size: size, kerning: 2)
.foregroundColor(color)
// .lineLimit(2)
+
Text(" ")
+
Text(Constants.terms).underline()
.foregroundColor(color)
// .onTapGesture {
// print("test")
// }
+
Text(" and ")
.foregroundColor(color)
+
Text(Constants.privacyPolicy).underline()
.foregroundColor(color)
}
}
试图将一个可单击的.onTapGesture应用于Text(),还尝试添加一个按钮并将其连接到文本中,也没有成功
谢谢 丹
答案 0 :(得分:1)
已经太迟了,但是如果这对某人有帮助,那么我很高兴:)
尝试一下,
var body: some View {
VStack {
Text("By creating an account you agree to our ")
HStack {
Button(action: { }){ Text("Terms").underline() }
Text(" and ")
Button(action: { }){ Text("Privacy Policy").underline()}
}
}
}
结果:
答案 1 :(得分:0)
一种简单的方法:
Text("By creating an account you agree to our ")
Button(action: { self.openPrivacyPage()}){ Text("Privacy Policy")}
.buttonStyle(BorderlessButtonStyle())
您可以使用字体大小/类型等进一步设置文本和按钮的样式。使用HStack保持在同一行。
这将导致:
答案 2 :(得分:0)
问题是当您有一个动态文本时,整个段落的中间应该是可轻敲的图像或文本,而不是总是在同一位置。 让我们假设您有一个动态导入的文本,并放置在视图上的某个位置。而您想使一个有趣的单词发光,并使其可轻敲以给出含义或其他内容。我尚未发现可以在SwiftUI中做到这一点。
let firstHalfOfParagraph = Text($importedStringBeforeWord)
let secondHalfOfParagraph = Text($importedStringAfterWord)
let word = Text($importedWord)
return firstHalfOfParagraph + word.onTapGesture{print("action")} + secondHalfOfParagraph
这永远都行不通,因为单词现在是AnyView而不是Text,并且无法与Text串联!因此陷入了困境。