【发布时间】:2021-09-27 21:38:08
【问题描述】:
我正在尝试为 macOS 上的 SwiftUI 设置视图创建首选项样式工具栏(文本上方的图标)。使用以下代码:
struct PreferencesView: View {
//MARK: Constants and Variables
@AppStorage("authToken") var authToken: String = ""
@AppStorage("author") var author: String = ""
//MARK: Main
var body: some View {
VStack {
HStack {
VStack (alignment: .leading, spacing: 10) {
Text("Author:")
Text("GitHub Auth Token:")
}
VStack {
TextField("", text: $author)
TextField("", text: $authToken)
}
}
.padding()
Spacer()
}
.toolbar {
ToolbarItem(placement: .principal) {
Button {
} label: {
Label {
Text("General")
} icon: {
Image (systemName: "gearshape")
}
.labelStyle (VerticalLabelStyle()) //custom label style
}
}
}
.frame(width: 480, height: 320)
}
}
结果是一个仅显示底部的按钮。
标签样式定义如下:
struct VerticalLabelStyle: LabelStyle {
@ViewBuilder
func makeBody(configuration: Configuration) -> some View {
VStack {
configuration.icon
.font(.largeTitle)
configuration.title
}
}
}
有人知道如何在 macOS 上的 SwiftUI 中成功创建这个吗?
【问题讨论】:
-
看起来您的
.font(.largeTitle)(也适用于图片)太大而无法放入空间,请改用.font(.body)。 -
@workingdog,谢谢,但 .largeTitle 仅适用于图像,我是故意这样做的。即使我将其更改为 .body,它仍然不适合。