SwiftUI 中 Button 和 Image 的可点击区域

Posted

技术标签:

【中文标题】SwiftUI 中 Button 和 Image 的可点击区域【英文标题】:Tappable area of Button and Image in SwiftUI 【发布时间】:2021-03-22 21:31:08 【问题描述】:

    Button(action: 
       print("Round Action")
       ) 
       Text("Press")
       .frame(width: 50, height: 50)
       .foregroundColor(Color.black)
       .background(Color.red)
       .clipShape(Circle())
       
       .background(Color.blue)

我希望实际的按钮是可点击的,而不是它周围的蓝色方形框,还有什么方法可以让我们摆脱那个框但仍然可以调整那个按钮的大小?

Button Image

【问题讨论】:

这能回答你的问题吗? Issue with Buttons in SwiftUI on MacOS 【参考方案1】:

你需要为你的Button设置.contentShape,默认是Rectangle

Button(action: 
    print("Round Action")
) 
    Text("Press")
        .frame(width: 150, height: 150)
        .foregroundColor(Color.black)
        .background(Color.red)
        .clipShape(Circle())

.contentShape(Circle()) // <- here
.background(Color.blue)

有什么方法可以让我们摆脱那个框架但仍然可以调整那个按钮的大小?

您可以尝试使用paddingscaleEffect,但frame 是更改视图宽度和高度的推荐方式。

【讨论】:

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

在 SwiftUI 中使用系统图标和 macOS 作为按钮

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

SwiftUI 无边框图像按钮

SwiftUI - 如何检测按钮上的长按?

SwiftUI 设置圆角、边框

SwiftUI .toolbar ToolbarItem 自定义按钮设计