SwiftUI,在工具栏中,菜单和按钮的标签图像大小不同

SwiftUI, In toolbar, the size of label image is different between Menu and Button

我加了两个ToolbarItem。一个是 Menu 另一个是 Button.

.toolbar {
    // Menu 
    ToolbarItem(placement: .navigationBarTrailing) {
        Menu(content: {
            Text("hello world")
        }, label: {
            Image(systemName: "gear")
        })
    }
    
    // Button
    ToolbarItem(placement: .navigationBarTrailing) {
        Button(action: {
            print("button touched")
        }, label: {
            Image(systemName: "gear")
        })
    }
}

即使我使用相同的图像作为标签,大小也不同。 结果是这样的

我想把菜单标签图片做成和按钮一样大,方便用户触摸。

在 macOS 12.beta、xcode 13.beta、目标 ios 15 和 macCatalyst 上运行良好。 这是我用来测试的代码:

import SwiftUI

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("testing")
                .toolbar {
                    // Menu
                    ToolbarItem(placement: .navigationBarTrailing) {
                        Menu(content: {
                            Text("hello world")
                        }, label: {
                            Image(systemName: "gear")//.resizable().scaleEffect(1.2)
                        })
                    }
                    // Button
                    ToolbarItem(placement: .navigationBarTrailing) {
                        Button(action: {
                            print("button touched")
                        }, label: {
                            Image(systemName: "gear")
                        })
                    }
                }
        }
    }
}

您可以使用“Image(systemName: "gear").resizable().scaleEffect(x)”消除任何不匹配。

只需将 .imageScale(.large) 修饰符添加到 Menu

Image
Menu(content: {
    Text("hello world")
}, label: {
    Image(systemName: "gear")
        .imageScale(.large) // Add this modifier

看起来默认情况下 SwiftUI 引擎正在计算代表您使用的大小。