Перетащите в обратном направлении - PullRequest
0 голосов
/ 03 февраля 2020

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

Заранее большое спасибо

1 Ответ

0 голосов
/ 03 февраля 2020

Я нашел это, это была просто строка кода

self.dragAmount = CGSize(width: $0.translation.width, height: -$0.translation.height)

, которую нужно было изменить на

self.dragAmount = CGSize(width: $0.translation.width, height: $0.translation.height)

Иногда это смотрит на тебя

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...