代码之家  ›  专栏  ›  技术社区  ›  Petter

SwiftUI-菜单在工具栏和正常视图中看起来不同

  •  0
  • Petter  · 技术社区  · 2 年前

    我正在为MacOS开发SwiftUI应用程序,我想创建一个菜单按钮。我已经完成了一般功能,然而,让我困惑的是,它看起来不同取决于我放置的位置。我在工具栏中有菜单按钮,在另一个视图中我有一个类似的按钮,但在“正常”(非工具栏)视图中。

    在工具栏中,它看起来和我想要的完全一样,但在我的另一个视图中,它更像是一个下拉菜单(特别是箭头部分)。

    这是工具栏中菜单的代码:

    ZStack{
        // Rest of view
    }.toolbar {
        Menu {
            Button(action: {
                //Action code
            }) {
                Text("Open File")
            }
            Button(action: {
                //Action code
            }) {
                Text("Open URL")
            }
        } label: {
            HStack {
                Image(systemName: "plus")
                Text("Open")
            }
        }.menuButtonStyle(BorderlessButtonMenuButtonStyle())
    }
    

    这就是它的外观,也是我希望它的外观:

    Toolbar menu button

    我的另一个按钮基本上有相同的SwiftUI代码:

    HStack{
        // Other components
        Menu {
            Button(action: {
                //Action code
            }) {
                Text("Open File")
            }
            Button(action: {
                //Action code
            }) {
                Text("Open URL")
            }
        } label: {
            HStack {
                Image(systemName: "plus")
                Text("Open")
            }
        }.menuButtonStyle(BorderlessButtonMenuButtonStyle())
    }
    

    这就是它在那里的样子:

    enter image description here

    有没有办法在普通视图中获得与工具栏中相同的外观?如有任何帮助,我们将不胜感激!谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   Benzy Neez    2 年前

    尝试使用 .menuStyle 而不是 .menuButtonStyle (已弃用)。

    我发现它也删除了边框,但你可以添加自己的:

    Menu {
        // content as before
    } label: {
        HStack {
            Image(systemName: "plus")
            Text("Open")
        }
    }
    .menuStyle(.borderlessButton)
    .padding(6)
    .background {
        RoundedRectangle(cornerRadius: 6)
            .stroke(.gray)
    }