Я создал Игру, которая включает в себя перетаскивание плиток и их удаление, это было создано в 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
}
}
}
Так что при перетаскивании плитка визуально неверна. Возможно, это связано с переходом с Какао на UIKit, и могу ли я что-то изменить, чтобы решить эту проблему?
Заранее большое спасибо