我已经在SwiftUI中使用20x20的拇指拖动器构建了自定义滑块。一切正常,除了轻按目标很小,因为它只是20x20的视图。我正在寻找一种增加此值的方法,以使用户更轻松地与我的滑块进行交互。在SwiftUI中有没有办法做到这一点?
我尝试将拇指包裹在Color.clear.overlay
中,并将帧设置为60x60。如果颜色是纯色(例如red
),则可以使用此方法,但是使用clear
时,点击目标似乎会恢复为20x20的可见像素。
您可以在此gif上看到,即使在拇指外侧单击也可以拖动滑块。
但是,一旦我将颜色更改为clear
,该区域就不再接收交互。
答案 0 :(得分:11)
在.contentShape(Rectangle())
之后添加frame
。
答案 1 :(得分:1)
我敢肯定有几种方法可以给猫剥皮,但这就是我用大面积可轻敲的方式做成一个大按钮的方法:
Button(action: { someAction() }, label: {
Text("OK")
.frame(minWidth: 200)
.contentShape(Rectangle())
.padding()
})
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(5.0)
答案 2 :(得分:0)
我有同样的问题。除非我不希望扩展的叠加层影响其余的布局。如果将所有内容都嵌入到ZStack中,并在交互式对象之前放置一个矩形,则可以控制手势的大小。有点像这样:
Rectangle().frame(width: screen.width, height: 300).opacity(0.001)
.layoutPriority(-1)
只需要确保将不透明度设置为几乎为零即可使您看不到,而将布局优先级设置为-1则不会影响视图。