繁体   English   中英

如何在 SwiftUI 中重新定位导航栏按钮

[英]How to re-position Navigation Bar Buttons in SwiftUI

我已经实现了navigationBarTitle ,我正在尝试实现一个navigationBarItem ,但是默认的 position 看起来很奇怪。 在此处输入图像描述

我希望 position 的 Next 按钮与navigationBarTitle一致。 我能够用这段代码完成一些事情:

.navigationBarTitle(Text("Names"))
.navigationBarItems(trailing:
            Button(action: {
                print("tapped")
            }) {
                Group {
                    Text("Next")
                }.position(x: 0, y: 60).background(Color.purple)

            })

但是问题在于按钮没有移动,因此在显示“下一步”的位置不可点击。 (我突出显示了 position 紫色来演示。) 在此处输入图像描述

有没有办法以更清洁的方式实现这一目标? 或者我可以实现的其他方法或堆栈,同时保持navigationBarTitle Large Tile 看起来在 SwiftUI 中? 谢谢!

您可以将按钮包装在ZStack中,并且 position 将Button包装在ZStack中,如下所示:

import UIKit
import PlaygroundSupport
import SwiftUI

 struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("Names")
                .navigationBarTitle(Text("Names"))
                .navigationBarItems(trailing:
                    ZStack {
                            Button(action: {
                                print("tapped")
                            }) {
                                Group {
                                    Text("Next")
                                }.background(Color.purple)
                            }.position(x: 0, y: 60)
                        })
        }
    }
}

let viewController = UIHostingController(rootView: ContentView())

PlaygroundPage.current.liveView = viewController

我在上面的操场示例中尝试过它并且它有效:

在此处输入图像描述

编辑:

除非您触摸并拖动,否则这似乎会使按钮无响应:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM