在 NavigationLink 内环绕视图会覆盖视图中文本的文本对齐方式以居中

Wrapping view inside NavigationLink overrides text alignment of Text in view to centered

我创建了一个由滚动视图中的视图组成的自定义菜单。

struct MenuInformationDetailView: View {
var title: String = "title"
var subTitle: String = "subTitle"
var imageName: String = "exclamationmark.circle.fill"

var body: some View {
    HStack(alignment: .center) {
        Image(systemName: imageName)
            .font(.largeTitle)
            .foregroundColor(.white)
            .padding()
            .accessibility(hidden: true)

        VStack(alignment: .leading) {
            Text(title)
                .font(.headline)
                .foregroundColor(.white)
                .accessibility(addTraits: .isHeader)

            Text(subTitle)
                .font(.body)
                .foregroundColor(.white)
                .opacity(0.8)
                .fixedSize(horizontal: false, vertical: true)
        }
    }
    .padding(.top)
}
}

然后我将视图包装在 NavigationLink 中以转到所需的目的地:

NavigationLink(destination: PanicDiaryEducationView()) {
        InformationDetailView(title: "Changing behaviour", subTitle: "How to use the behavioural experiments feature", imageName: "questionmark.circle.fill")
                       }

出于某种原因,这样做会导致字幕文本(可能还有标题)居中而不是默认的前导对齐。使用 .frame(alignment : .topLeading) 不会改变它。

当未包含在 NavigationLink 中时,格式正确。

如何阻止它使文本居中?

这是关于默认 multi-line 文本对齐的问题。与 SwiftUI 中的许多 default 一样,它通常并不明显。所以最好把它说清楚。所以这是一个修复:

Text(subTitle)
    .font(.body)
    .multilineTextAlignment(.leading)   // << here !!