2016-04-22 9 views
2

私はプロジェクトでユーザーがチェスをプレイできるようにしています。私はボードを表す親ビューを持ち、各四角形はサブビューとしてボードに追加されます。チェスピースはUIImageViewであり、サブビューとして正方形に追加されます。UIImageViewをサブビューから親ビューにアニメーション化する

occupyingPieceImageView = UIImageView(frame: CGRectMake(0, 0, size, size)) 
    self.addSubview(occupyingPieceImageView) 

私は他に1平方から作品の位置を変更したいチェスの動きをアニメーション化するために、私は手段はUIImageViewのフレームを変更することを理解し、私は、フレームは、それが唯一の範囲内にあるか、わかりません親ビュー(四角形)。これはうまくいかない:

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) 
} 

答えて

2

あなたの作品を四角形ではなくむしろボードに追加することを検討してください。このアーキテクチャでは、2つの四角形の間に線を置くなど、あらゆる動きをアニメートすることができます。

+0

私もそれを検討していますが、そのためにはデザインを変更する必要があります。他の選択肢はありますか? – phuong

+0

できることは、すべての四角のclipsToBoundsをfalseに設定することです。次に、ビューの外にある原点を持つフレームを使用して動きをアニメートできます(たとえば(-100、-100、50、50))。アニメーションが終了したら、補完ブロックで、新しい四角形の座標を再計算して、removeFromSuperViewを実行して新しい四角形に即座にサブビューを追加することができます。これは本当に非効率的ですが、うまくいくはずです。 – Terminus

関連する問題