agi*_*007 19 ios swift swiftui
点击超出裁剪视图边界的注册。
SwiftUI 似乎会在另一个视图内以全宽和全高布局图像,以为其提供纵横填充的填充模式。这很好,但是如果我想向视图添加点击动作,即使被裁剪,点击也会在视图边界之外注册。我可能做错了,或者可能有另一种方式。除了这段代码,我还尝试使用矩形的 .clippedShape 和 .contentShape 。我如何将它带到剪辑框架外的点击不会在底层图像上注册的地方。要重现切换到剪辑并点击图像将占据剪辑视图框架之外的区域。
import SwiftUI
struct ImageContainer : View {
var body: some View {
Image(systemName: "cube")
.resizable()
.scaledToFill()
.clipped()
}
}
struct ContentView: View {
@State var isClipped = false
@State var count = 0
var body: some View {
VStack{
Toggle(isOn: $isClipped) {
Text("Clip It ")
.font(.title)
}.frame(width: 175)
ZStack{
if self.isClipped == true{
ImageContainer()
.frame(width: 200, height: 200)
.contentShape(Rectangle())
.clipped()
.background(Color.blue)
.onTapGesture {
print("tapped mainContainer\(self.count)\n")
self.count += 1
}
}else{
ImageContainer()
.frame(width: 200, height: 200)
.background(Color.blue)
.onTapGesture {
print("tapped mainContainer\(self.count)\n")
self.count += 1
}
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
Mig*_*elí 11
我在控制可点击区域的图像上使用 .contentShape(Rectangle()) 取得了成功。
您可以尝试使用 ZIndex 以便周围的视图捕获命中。但是我的结果好坏参半,AFAIK 从 iOS 14.1 开始也被窃听了
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |