我正在尝试在 SwiftUI 中进行文本笔画或在我的文本上添加边框,而不是在Text()项目中的字母中。
是否可以?
我想用边框制作这种效果:

假设我有一个AttributedString:"已经有一个帐户?登录!".我将此字符串放在UILabel中.现在,当用户点击"登录!"时,当前的viewController应该转到另一个viewController,或者在点击登录时调用某个函数.
任何代码或建议都应该没问题.
在 Swift 5.5 SwiftUI 中,现在可以在 Markdown 文本中包含链接。是否可以使用它为Text视图中的子文本添加点击处理程序?例如,我正在想象做如下的事情,但我还没有弄清楚如何构建一个适用于此目的的链接(我每次都会收到 URL 错误)。设置某种自定义 url 架构是否有效?有没有更好的解决方案可以做到这一点,比如我可以添加到与sText类似的视图中?目标是解决与此处提到的类似问题,但不必回退到 UITextView 或非包装 HStack 或带有 ZStack 的 GeometryReaders。UITextViewshouldInteractWith
let baseText = "apple banana pear orange lemon"
let clickableText = baseText.split(separator: " ")
.map{ "[\($0)](domainThatImAllowedToCapture.../\($0))" }
Text(.init(clickableText)).onOpenLink { link in
print(link.split(separator: "/").last) // prints "pear" if word pear is tapped.
}
Run Code Online (Sandbox Code Playgroud) 我需要在 SwiftUI 视图的文本段落中使特定的带下划线的单词可点击。
目前我的 onTapGesture 适用于整个段落,但我只需要在Text(labelOne)(AKA Action)上使用它。
我无法在 Text(labelOne) 上使用 onTapGesture AND .underline,因为如果 underline() 放置在 onTapGesture {} 下,则会出现错误“无法将‘some View’类型的值转换为预期参数类型‘Text’”或“无法转换值”如果我将 onTapGesture{} 放在 .underline() 下,则“某些视图”类型将变为预期参数类型“文本”” 。
在这种情况下,我组合了文本视图,Text(“Action”)+ Text(“第一句结束。”)+ Text(“Body Text”),所以这就是阻止我将 .onTapGesture 与 .underline() 组合的原因
最好在段落内使用按钮,以便用户获得按下操作的视觉反馈,但不确定在不与文本分离的情况下这是否可能?
如果将 Text 放入 HStack 中(这将允许我将 .underline() 和 .onTapGesture{} 添加到特定视图),如果 Text(labelTwo) 的句子增长,则看起来很糟糕,请参见下文
struct TextView: View {
let labelOne: String = "Action"
let labelTwo: String = "end of first sentence."
let text: String = "Begining of second sentence lorem ipsum …Run Code Online (Sandbox Code Playgroud) 如果文本在聊天屏幕中包含 URL,是否有任何方法可以突出显示文本并可单击
发件人用户代码:-
import SwiftUI
struct TextHighlightURL: View {
var body: some View {
HStack(alignment: .bottom){
Spacer()
Text("2:22 PM").font(.system(size: 10))
.foregroundColor(.gray)
HStack {
Text("www.google.com")
.foregroundColor(.white)
.multilineTextAlignment(.trailing)
.padding(10)
}
.background(Color.init("DTR-ChatSendrColor"))
.cornerRadius(10.0)
}.padding(.vertical,5)
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
输出:-


接收者用户代码:-
struct SenderReciverUI1: View {
var body: some View {
Group {
HStack(alignment: .bottom){
VStack(alignment: .leading,spacing:5) {
HStack(alignment: .bottom) {
Text("www.google.com")
.foregroundColor(.white)
.padding(10)
.cornerRadius(10.0)
}
}
Spacer()
}.padding(.vertical,5)
.padding()
}
}
}
Run Code Online (Sandbox Code Playgroud)

我的目标:-

有人可以向我解释一下,如果发件人发送链接并且接收者收到链接,则如何从两侧显示突出显示文本,如果文本包含 URL,则它会自动突出显示并且可单击,我已尝试按上述方式实现,但还没有结果。
任何帮助将不胜感激。
提前致谢。