2016-07-31 10 views
-1

私は、UIの円を削除し、それを他の場所に再作成するアニメーションを持っていますが、再作成すると、私の好みよりも小さくなります。なぜそれが小さく見えるのか分かりません。Swift - アニメーションのエフェクトを削除

 let viewsToAnimate = [circleFrame] 

     UIView.perform(UISystemAnimation.delete, on: viewsToAnimate, options: [], animations: { 

      }, completion: { finished in 
       self.circle.removeFromSuperlayer() 
       self.circleFrame.removeFromSuperview() 
       self.circleFrame.layer.removeAllAnimations() 
       self.createCircle() 
       self.score = self.score + 1 

       self.scoreLabel.text = "Taps: " + String(self.score) 
       self.tapsLabel.text = "Taps: " + String(self.initialTaps + self.score) 
     }) 



func createCircle() { 
    let randomX = generateRandomX() 
    let randomY = generateRandomY() 

    circleCenter = generateCircleCenter(x: randomX, y: randomY) 

    circleFrame.frame = CGRect(x: randomX, y: randomY, width: 100, height: 100) 
    circleFrame.alpha = 1.0 

    self.view.addSubview(circleFrame) 

    circle.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 100, height: 100), cornerRadius: 50).cgPath 
    circle.fillColor = UIColor(red: 0, green: greenValue/255, blue: 0.6, alpha: 1.0).cgColor 
    circle.strokeColor = UIColor(red: 1, green: greenValue/255, blue: 0, alpha: 1.0).cgColor 
    circle.lineWidth = 0 

    circleFrame.layer.addSublayer(circle) 
} 

すべてのアニメーションを削除しようとしましたが、それは常に小さく表示されます。なぜこのようなことが起こるかについての助けは素晴らしいことでしょう。

createCircle()が初めて呼び出されたときの様子です。

enter image description here

これは、それがアニメから呼び出されたときに、それがどのように見えるかです。 CAAnimationは、元のサイズにリセットされますので、私が思う

enter image description here

+0

私は前と後の写真をアップロードするのに苦労しましたが、ここにドロップボックスリンクがあります。大きなドットのあるものは、最初にcreateCircle()が呼び出されたときにどのように見えるかです。一方、他のピクチャは、アニメーションから呼び出されたときの外観です。 https://www.dropbox.com/sh/bccvdfnrjgou2tp/AABZYmswSlwkXimAHG_dQ9tYa?dl=0 – Taylor

+0

私はremoveAllAnimationsとremoveFromSuperviewを入れて、修正するかどうかを確認しましたが、修正していませんでした。私が知る限り、createCircle()はそれを毎回作成しません。可変円は、viewController内のすべての関数の外で呼び出されるため、作成された場所以外の関数で編集することができます。私がそれらを再現するたびに、私は彼らが以前のものから編集されていると思う。 – Taylor

+0

どうすれば解決できますか? – Taylor

答えて

0

は、trueにremovedOnCompletionを設定するのに十分です。 試してみてください! :)

関連する問題