SwiftUI 按钮点击区域不准确但在 navigationBarItems 中是正确的

Posted

技术标签:

【中文标题】SwiftUI 按钮点击区域不准确但在 navigationBarItems 中是正确的【英文标题】:SwiftUI Button tap area not accurate but in navigationBarItems is right 【发布时间】:2021-03-03 19:00:50 【问题描述】:

这里在navigationbaritem 和ContentView 中使用相同的按钮视图。 有想法解决这个问题吗? https://imgur.com/a/jCxfVSa

struct myButton: View 
    var body: some View 
        Button(action:   print("qwe\(Int.random(in: 1...100))") ) 
            Image( "play")
                .resizable()
                .scaledToFit()
                .background(Color.red)
        
        .frame(width: 40, height: 40, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
    



struct ContentView: View 
    var body: some View 
        NavigationView 

            myButton()
                
          .navigationBarItems(leading:

            myButton()
          )
                .navigationTitle("Title")
                .navigationBarTitleDisplayMode(.inline)
        
    

enter image description here

【问题讨论】:

【参考方案1】:

在 SwiftUI 中,您不能在工具栏图标上使用整形 (可以,但有时导航栏图标会丢失剪辑形状(在 navigationLink、.sheet、.alert.... 之后)

(在 SwiftUI 2 上更喜欢使用 .toolbar,没有 .navigationBarItems())

但是,你可以使用 SwiftUIX 库on GitHub

【讨论】:

以上是关于SwiftUI 按钮点击区域不准确但在 navigationBarItems 中是正确的的主要内容,如果未能解决你的问题,请参考以下文章

Swiftui 有没有办法改变按钮的可点击区域

SwiftUI 中图像按钮的可点击区域

如何在 SwiftUI 中点击手势时放大缩小按钮动画?

SwiftUI 导航栏项目中难以点击的按钮

如何使按钮的可点击区域成为按钮框架

SwiftUI Navigation 多个后退按钮