SwiftUI iOS13 如何将Text视图的部分内容设置为NavigationLink
因为+运算符仅支持Text类型视图之间的拼接,NavigationLink不属于Text类型,所以无法直接拼接使用。iOS 13没有内置富文本内嵌视图的支持,你可以用以下两种方案实现需求:
方案1:HStack模拟拼接(适用于单行文本场景,实现最简单)
通过HStack设置基线对齐,视觉效果和直接拼接Text完全一致:
NavigationView { HStack(alignment: .firstTextBaseline, spacing: 0) { NavigationLink { // 此处替换为你的跳转目标视图 UserDetailView() } label: { Text(AppStrings.dummyName) .bold() } Text(" \(AppStrings.dummyMemberRequest)") } }
注意点:
- 对齐参数设置为
firstTextBaseline可以保证两个文本的文字基准线完全对齐,不会出现一高一低的问题 - spacing设为0即可,后续的Text已经自带前置空格控制间距,不需要额外加HStack的默认间距
方案2:封装UILabel(适用于多行文本折行场景)
如果文本长度超过一行需要自动折行,HStack无法实现文本自动换行效果,你可以通过UIViewRepresentable封装UILabel,给指定范围的文本添加点击手势识别,点击后触发Navigation跳转逻辑即可。
内容的提问来源于stack exchange,提问作者Tanvirgeek
相关产品推荐
相关产品推荐

