SwiftUI Text富文本

富文本解决方案大致有下面几种
1、Text的超链接:
2、如果是单行文字使用HStack把多个Text拼接起来,这种方式比较简单也用的比较多
3、Text + Text的拼接,处理onTapGesture事件。不可行,因为onTapGesture返回的是some View,而不是Text,+ 拼接是适用于Text,所以不可行。
4、 跳转URL Schemes,在本应用中接收。可行

这里主要介绍几种常见的解决方案

Text跳转URL Schemes

设置超链接需要先在 target ——> info ——> URL Types ,新建一个URL Schemes。

Text("登录即代表您已同意并同意[《XX商城使用协议》](mydemo:protocol)")
 .onOpenURL { url in
        switch url.absoluteString {
        case "mydemo:protocol":
            //todo something
            break
        default:
            break
        }
  }

HStack包裹两个Text

这种方式比较适用单行且内容固定的场景

 HStack{
    Text("登录即代表您已同意并同意")
        .font(.system(size: 14))
    Text("《XX商城使用协议》")
        .font(.system(size: 14))
        .foregroundColor(.orange)
        .onTapGesture {
            print("点击协议")
        }
}
.frame(width: UIScreen.main.bounds.size.width)

Text + Text的拼接

此种方式比较灵活唯一不好的地方是,无法处理富文本内容的onTapGesture事件,因为onTapGesture返回的是some View,而不是Text,+ 拼接是适用于Text,所以不可行,可以把点击事件放在外层,让整行都可以点击,用来处理该场景还是比较合适的

HStack{
    Text("登录即代表您已同意并同意")
        .font(.system(size: 14))
    +
    Text("《XX商城使用协议》")
        .font(.system(size: 14))
        .foregroundColor(.orange)
}
.frame(width: screenWidth)
.onTapGesture {
      print("点击协议")
}
posted @   qqcc1388  阅读(1163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示