-1

UI で円を削除して別の場所に再作成するアニメーションがありますが、再作成すると、必要なサイズよりも小さくなります。小さく見える理由がわかりません。

        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()最初に呼び出されたときの様子は次のとおりです。

ここに画像の説明を入力

アニメから呼び出すとこんな感じ。

ここに画像の説明を入力

4

1 に答える 1

0

removeOnCompletion を true に設定するだけで十分だと思うので、CAAnimation は元のサイズにリセットされます。試してみる !:)

于 2016-08-24T16:20:47.633 に答える