如何使navigationBarTitle和navigationBarItem的重叠区域可点击 - SwiftUI

Posted

技术标签:

【中文标题】如何使navigationBarTitle和navigationBarItem的重叠区域可点击 - SwiftUI【英文标题】:How to make the overlap area of navigationBarTitle and navigationBarItem tappable - SwiftUI 【发布时间】:2019-12-10 12:43:49 【问题描述】:

目前只有红色区域的中间部分是可点击的,我知道下面的区域与navigationBarTitle重叠,但我仍然想知道是否可以让下面的区域也可以点击。

import SwiftUI

struct ContentView: View 
    @ObservedObject var taskStore: TaskStore
    @State var modalIsPresented = false

    var body: some View 
        NavigationView 
            List 
                ForEach(taskStore.tasks)  index in
                    RowView(task: self.$taskStore.tasks[index])
                
                .onMove  sourceIndices, destinationIndex in
                    self.taskStore.tasks.move(
                        fromOffsets: sourceIndices,
                        toOffset: destinationIndex
                    )
                
                .onDelete  indexSet in
                    self.taskStore.tasks.remove(atOffsets: indexSet)
                
            
            .navigationBarTitle("Tasks")
            .navigationBarItems(
                leading: EditButton(),
                trailing:
                Button(
                    action:  self.modalIsPresented = true 
                ) 
                    Image(systemName: "plus")
                    .padding(EdgeInsets(top: 50, leading: 50, bottom: 50, trailing: 10))
                    .background(Color.red)
                
            )
            
        .sheet(isPresented: $modalIsPresented) 
            NewTaskView(taskStore: self.taskStore)
        
    


struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView( taskStore: TaskStore() )
    


【问题讨论】:

【参考方案1】:

你的代码有两个小改动

.navigationBarItems(
            leading: EditButton(),
            trailing:
            Button(
                action:  self.modalIsPresented = true 
            ) 
                Image(systemName: "plus")
                .padding()
                .background(Color.red)
            
        )

【讨论】:

感谢您的回答。而我的意思是让那个已经延伸到 barTitle 范围的区域。我刚刚添加了该地区的照片,但看起来不可行。

以上是关于如何使navigationBarTitle和navigationBarItem的重叠区域可点击 - SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

在 swiftUI 中,如何仅删除 NavigationBarTitle 的安全区域?

SwiftUI 2.0 中的 navigationBarTitle 和 navigationTitle 有啥区别? [复制]

在根据条件显示的两个视图上使用相同的 `navigationBarTitle` 和 `navigationBarItems`

swiftui 对成员“navigationBarTitle”的模糊引用

Navigationbartitle 显示一个白框

SwiftUI 将 navigationBarItems 按钮与“消息”中的大 navigationBarTitle 对齐