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

Posted

技术标签:

【中文标题】SwiftUI 中图像按钮的可点击区域【英文标题】:Tappable area of an Image Button in SwiftUI 【发布时间】:2021-03-23 18:28:07 【问题描述】:

我想在点击图像时关闭当前视图,但该图像的可点击区域大于实际图像(如图所示蓝色背景也是可点击的),如果我增加可点击的图像大小面积也增加了,如何去除图片周围的蓝色框,但仍然可以增加图片尺寸?

 Image("Cancel")
      .resizable()
      .scaledToFit()
      .contentShape(Circle())
      .frame(width: 50, height: 50)

      .background(Color.blue)
      .onTapGesture 
      presentationMode.wrappedValue.dismiss()
      

Button Image

【问题讨论】:

SwiftPunk 的答案是正确的,但我只是复制粘贴了 Paul Hudson 在课程中教授的内容,它绝对完美,它还使周围的框架与图像 Image("Cancel") .renderingMode( .original) .clipShape(Circle()) .overlay(Circle().stroke(Color.black,lineWidth: 1)) 【参考方案1】:

您需要像在代码中一样使用 clipShape:


import SwiftUI

struct ContentView: View 
    var body: some View 

        Image(systemName: "xmark.circle")
            .resizable()
            .scaledToFit()
            .frame(width: 50, height: 50)
            .background(Color.blue)
            .contentShape(Circle())
            .clipShape(Circle())
            .onTapGesture 
                presentationMode.wrappedValue.dismiss()
            
        
    

【讨论】:

以上是关于SwiftUI 中图像按钮的可点击区域的主要内容,如果未能解决你的问题,请参考以下文章

如何指定或更改按钮 SwiftUI 的可点击区域

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

SwiftUI 按钮的可触摸区域

SwiftUI 中 Button 和 Image 的可点击区域

Catalyst 'SwiftUI.AccessibilityNode' 不是已知的可序列化元素

SwiftUI 列表中的自定义按钮