SwiftUI:增加点击/拖动区域以进行用户交互

kee*_*n3d 5 swift swiftui

我已经在SwiftUI中使用20x20的缩略图拖动器构建了一个自定义滑块。一切正常,除了轻按目标很小,因为它只是20x20的视图。我正在寻找一种增加此值的方法,以使用户更轻松地与我的滑块进行交互。在SwiftUI中有没有办法做到这一点?

我试着用拇指包住Color.clear.overlay并将帧设置为60x60。如果颜色是纯色(例如)red,则可以使用clear此方法,但是使用轻敲目标似乎可以还原为20x20的可见像素。

您可以在此gif上看到,即使在拇指外侧单击也可以拖动滑块。

红色背景滑块

但是,一旦我将颜色更改为clear,该区域就不再接收交互。

具有清晰背景的滑块

Chr*_*ris 13

我确信有几种方法可以给猫剥皮,但这就是我制作一个可以点击整个区域的大按钮的方法:

Button(action: { someAction() }, label: {
                Text("OK")
                .frame(minWidth: 200)
                .contentShape(Rectangle())
                .padding()
            })
                .background(Color.blue)
                .foregroundColor(.white)
                .cornerRadius(5.0)
Run Code Online (Sandbox Code Playgroud)


Jor*_*ers 9

.contentShape(Rectangle())后面添加一个frame


小智 5

我有同样的问题。但我不希望扩展的覆盖层影响布局的其余部分。如果将所有内容嵌入到 ZStack 中并在交互式对象之前放置一个矩形,则可以控制手势的大小。有点像这样:

Rectangle().frame(width: screen.width, height: 300).opacity(0.001)
                    .layoutPriority(-1)
Run Code Online (Sandbox Code Playgroud)

只需确保将不透明度设置为几乎为零,这样您就看不到它,并将布局优先级设置为 -1,这样就不会影响视图。