ios SwiftUI:如何使用AttributedString在应用程序中打开链接而不是Safari

eimct9ow  于 2023-06-25  发布在  iOS
关注(0)|答案(1)|浏览(146)

我有一个FAQ页面,其中单元格的标题为String,描述为AttributedString,这样我就可以自定义描述中链接的外观。如何在应用程序而不是Safari中打开链接?我也有一个支持邮件链接,我想提供MailView给用户。

struct LinkFormatter {
    
    static func toAS(for string: String, linkRange: String, to link: String) -> AttributedString{
        var result = AttributedString(string)
        
        let linkRange = result.range(of: linkRange)!
        
        result[linkRange].link = URL(string: link)
        result[linkRange].underlineStyle = Text.LineStyle(pattern: .solid)
        result[linkRange].foregroundColor = .black
        
        return result
    }
}

struct faqCell : View {

var mediumLink = LinkFormatter.toAS(for: "you can always read our Medium blog.",
                                    linkRange: "Medium blog",
                                    to: "https://medium.com")
    var body : some View {
        VStack(alignment: .leading) {
            Text("title")
            Text(mediumLink)
                .foregroundColor(.gray)
        }
    }
}
olmpazwi

olmpazwi1#

有一个环境处理器你可以使用。

Text(mediumLink)
    .environment(\.openURL, OpenURLAction { url in
        // Do whatever

        return .handled
    })

相关问题