在 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 !!
我创建了一个由滚动视图中的视图组成的自定义菜单。
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 !!