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

Posted

技术标签:

【中文标题】Swiftui 有没有办法改变按钮的可点击区域【英文标题】:Swiftui is there a way to change the clickable area of a button 【发布时间】:2020-01-07 19:35:28 【问题描述】:

有没有办法改变 swiftui 按钮的可点击区域? 我在检测到的文本区域上添加了一些按钮并想要单击它。 但是通过这段代码,我得到了这些结果

    var body: some View 
    HStack 
        ZStack
            GeometryReader  geometry in
                Image(nsImage: self.img!)
                    .resizable()
                    .scaledToFit()
                    .background(self.rectReader())
            
            ForEach(self.rects)  rect in
                Button(action: 
                    buttonPressed()
                ) 
                    Rectangle()
                    .fill(Color.init(.sRGB, red: 1, green: 0, blue: 0, opacity: 0.2))
                    .frame(width: rect.width, height: rect.height)
                
                .offset(x: rect.xAxis, y: rect.yAxis)
            
        

可点击区域比我创建的矩形大很多。

【问题讨论】:

为什么不把.onTapGesture直接加到Recatangle()呢? 你真的让我大吃一惊!!!我会接受你的建议。不过,我正在使用 macos。 成功了。再次非常感谢 【参考方案1】:

https://***.com/a/58422956/1334703

import SwiftUI

struct BlueButtonStyle: ButtonStyle 
    func makeBody(configuration: Self.Configuration) -> some View 
        configuration.label
            .foregroundColor(configuration.isPressed ? Color.blue : Color.white)
            .background(configuration.isPressed ? Color.white : Color.blue)
            .cornerRadius(6.0)
            .padding()
    


struct ContentView: View 
    var body: some View 
        VStack 
            Text("Hello World")
                .frame(maxWidth: .infinity, maxHeight: .infinity)

            Button(action: 
            ) 
                Text("Press")
                    .frame(maxWidth: 100, maxHeight: 24)
            
            .buttonStyle(BlueButtonStyle())
        
    



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

【讨论】:

以上是关于Swiftui 有没有办法改变按钮的可点击区域的主要内容,如果未能解决你的问题,请参考以下文章

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

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

有没有办法将 UIBarButtonItem 的可点击区域设为 44x44?

SwiftUI 按钮的可触摸区域

图片的可点击区域

SwiftUI 中 Button 和 Image 的可点击区域