2016-05-29 15 views
0

私はこれまでにこの問題を抱えていましたが、それが何であるか把握できませんでした。アニメーションのUIViewのスケーリングが異常に動作する

プレイグランドでビューを「スタンドアロン」にアニメーション化している場合、このようなことはうまくいきますが、今は提供されたGIFのように見えます。

アニメーションを上手く表示しますが、アニメーション化(スケール)したいときは、最大化されたサイズを取得してから消えます。

enter image description here

ここではそれをアニメーション化するコードは次のとおりです。

self.circleView.transform = CGAffineTransformIdentity 
UIView.animateWithDuration(0.5, delay: 0, options: [], animations: { 
    self.circleView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001); 
}, completion: { 
    finished in 
    if finished { 
     self.resetStyle() 
     self.circleView.hidden = true 
     self.circleView.transform = CGAffineTransformIdentity 
    } 
}) 

func resetStyle() { 
    self.circleView.transform = CGAffineTransformIdentity 
    self.circleView.backgroundColor = nil 
    self.textLabel.textColor = UIColor.blackColor() 
} 
+1

'self.resetStyleは()'何をしているのですか? – Cjay

+0

質問に追加します – netigger

+0

このアニメーションを「UIView」に直接適用するのではなく、ビューのレイヤーに適用しようとしましたか?あなたのアフィン変換を3D変換で置き換えますか? –

答えて

0

はこれを試してみてください:

@IBOutlet weak var circleView: UIView! 

@IBAction func leftAction(sender: AnyObject) { 
    self.circleView.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1) 
    UIView.animateWithDuration(0.5) { 
     self.circleView.layer.transform = CATransform3DIdentity 
    } 
} 

@IBAction func rightAction(sender: AnyObject) { 
    circleView.layer.transform = CATransform3DIdentity 
    UIView.animateWithDuration(0.5) { 
     self.circleView.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1) 
    } 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    circleView.backgroundColor = .blueColor() 
    circleView.layer.cornerRadius = CGRectGetMidY(circleView.bounds) 
} 

enter image description here

関連する問題