Ich arbeite an einem Projekt, bei dem Benutzer Schach spielen können. Ich habe eine Elternansicht, die eine Tafel darstellt, jedes Quadrat wird der Tafel als Unteransicht hinzugefügt. Schachfigur ist eine UIImageView und wird als Unteransicht zu einem Quadrat hinzugefügt.Animiere UIImageView von einer Unteransicht zur übergeordneten Ansicht
occupyingPieceImageView = UIImageView(frame: CGRectMake(0, 0, size, size))
self.addSubview(occupyingPieceImageView)
Um einen Schachzug ich von einem Platz zu einem anderen wollen animieren die Position des Stückes ändern, verstehe ich, dass bedeutet, dass die UIImageView des Rahmens zu ändern, aber ich weiß nicht, wie der Rahmen nur ist er innerhalb der Elternansicht (Quadrat). Das funktioniert nicht:
func move(destSquare: Square){
var imgView = self.occupyingPieceImageView
var thisPiece = self.piece
UIView.animateWithDuration(3, animations: {
self.clearPiece()
imgView.frame = destSquare.frame
})
destSquare.setPiece(thisPiece)
}
Ich überlege, das auch zu tun, aber dafür muss ich das Design ändern. Gibt es noch eine andere Möglichkeit? – phuong
Sie können clipsToBounds für alle Quadrate auf false setzen. Dann können Sie Bewegungen mithilfe von Rahmen animieren, deren Ursprung außerhalb der Ansicht liegt (z. B. (-100, -100, 50, 50)). Nachdem die Animation beendet ist, können Sie im Completion-Block die Koordinaten für das neue Quadrat neu berechnen und removeFromSuperView und sofortSubview auf einem neuen Quadrat hinzufügen. Dies wäre wirklich ineffizient, sollte aber funktionieren. – Terminus