包含在菜单中的 SwiftUI 视图不会调整大小

SwiftUI View wrapped up in Menu doesn't resize

我想在菜单中使用视图,我的视图有 @State 属性,但我遇到了包含在菜单中的视图无法调整大小的问题。我检查了文档,没有发现任何可以影响菜单内视图大小的内容。有人可以描述一下为什么 Menu 有这种行为以及如何解决这个问题吗?

import SwiftUI

struct MenuView: View {

@State var greeting: Greetings = .short

enum Greetings: String, Identifiable, CaseIterable {
    case short = "Hi"
    case medium = "Hello"
    case long = "Nice to see you"
    
    var id: String { self.rawValue }
}

var body: some View {
    VStack(spacing: 20) {
        Picker("Options", selection: $greeting) {
            ForEach(Greetings.allCases) { greeting in
                Text(greeting.rawValue).tag(greeting)
            }
        }
        .pickerStyle(.segmented)
        Text("Greeting wrapped in menu:")
        Menu {
            Button("Send to Someone", action: {})
            Button("Save as PDF", action: {})
        } label: {
            Label(greeting.rawValue, systemImage: "doc.fill")
                .labelStyle(.titleOnly)
        }
        
        Text("Greeting without menu:")
        Text(greeting.rawValue)
    }
}
}

我假设您的意思是菜单标签中的文本不会增大或缩小,具体取决于您在选择器中所做的选择。

这是因为正在设置标签的大小,但没有更改。如果您同意,在 Label 的框架上设置 maxWidth.infinity 即可实现此功能。

Label(greeting.rawValue, systemImage: "doc.fill")
    .labelStyle(.titleOnly)
    .frame(maxWidth: .infinity) <<-- This here