gpt4 book ai didi

image - 如何在用户点击的地方显示图像? swift 用户界面

转载 作者:行者123 更新时间:2023-12-04 02:36:55 25 4
gpt4 key购买 nike

我正在制作一款挖掘挖掘游戏,我想在用户点击的任何地方显示一个锤子。

我的意思是,无论用户点击哪里,锤子图像都会停留一秒钟。

有办法吗?

我的示例代码如下:

struct Level1: View {

@State var tapScore = 0
@State var showingMinedHammer = false

func showMinedHammer() {
self.showingMinedHammer = true
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.showingMinedHammer = false
}
}

func mine() {
tapScore += 1
showMinedHammer()
}

var body: some View {
GeometryReader { geometryProxy in
ZStack {
Image("mine1").resizable().frame(width: UIScreen.main.bounds.height * 1.4, height: UIScreen.main.bounds.height)
.onTapGesture {
self.mine()
}

if self.showingMinedHammer {
Image(systemName: "hammer.fill")
.resizable()
.frame(width: 30, height: 30)
}

}
}.edgesIgnoringSafeArea(.all)
}
}

最佳答案

它只需要读取点击的位置并将其用作锤子图像的位置,如下所示 - 全部由 SwiftUI 完成

使用 Xcode 11.4/iOS 13.4 测试

demo

这里只修改了部分

@State private var location = CGPoint.zero      // < here !!
var body: some View {
GeometryReader { geometryProxy in
ZStack {
Image("mine1").resizable().frame(width: UIScreen.main.bounds.height * 1.4, height: UIScreen.main.bounds.height)
.gesture(DragGesture(minimumDistance: 0).onEnded { value in
self.location = value.location // < here !!
self.mine()
})
if self.showingMinedHammer {
Image(systemName: "hammer.fill")
.resizable()
.frame(width: 30, height: 30)
.position(self.location) // < here !!
}
}
}.edgesIgnoringSafeArea(.all)
}

关于image - 如何在用户点击的地方显示图像? swift 用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61333807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com