【发布时间】:2020-05-19 03:48:35
【问题描述】:
我创建了一个游戏,其中涉及拖放瓷砖,这是在 MacOS 中创建的。然后我在 IOS 中重新构建了完全相同的应用程序,并且它按预期使用了 UIKit。我唯一的问题是,当我拖动瓷砖时,它们会朝相反的垂直方向移动。 所以我向上和向左拖动,瓷砖向下和向左移动......但是当我释放时,它知道我在哪里放下并且瓷砖出现在正确的位置。
import SwiftUI
enum DragState {
case unknown
case good
case bad
}
struct Letter: View {
@State private var dragAmount = CGSize.zero
@State private var dragState = DragState.unknown
var text: String
var index: Int
var onChanged: ((CGPoint, String) -> DragState)?
var onEnded: ((CGPoint, Int, String) -> Void)?
var body: some View {
Image(text)
.frame(width: 67, height: 97)
.offset(dragAmount)
.zIndex(dragAmount == .zero ? 0 : 1)
.shadow(color: dragColor, radius: dragAmount == .zero ? 0 : 10)
.shadow(color: dragColor, radius: dragAmount == .zero ? 0 : 10)
.gesture(
DragGesture(coordinateSpace: .global)
.onChanged {
self.dragAmount = CGSize(width: $0.translation.width, height: -$0.translation.height)
self.dragState = self.onChanged?($0.location, self.text) ?? .unknown
}
.onEnded {
if self.dragState == .good {
self.onEnded?($0.location, self.index, self.text)
}
self.dragAmount = .zero
}
)
}
var dragColor: Color {
switch dragState {
case .unknown:
return .black
case .good:
return .green
case .bad:
return .red
}
}
}
所以只是在拖动时,图块在视觉上是不正确的。 这可能是因为从 Cocoa 更改为 UIKit,因此我可以更改一些东西来解决这个问题吗?
提前致谢
【问题讨论】:
标签: ios xcode cocoa uikit swiftui