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
引擎正在计算代表您使用的大小。
我加了两个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
引擎正在计算代表您使用的大小。