2016-06-17 16 views
0

雲の場所にアイテムを作成しようとしています。これまでのところ、クラウドにアニメーションを繰り返してもらいたいのですが、アイテムを生成すると、クラウドアニメーションが最初からリセットされます。Swiftでサブビューを追加するときにアニメーションがリセットされないようにするにはどうすればいいですか?

subviewを追加すると、私のオプションは何ですか?

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    gemCloudImage.center.x = 100 
    makeCloudFly() 
} 

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(true) 
} 

func makeCloudFly() { 
    UIView.animateWithDuration(6, delay: 1, options: [.Autoreverse, .Repeat], animations: { 
     self.gemCloudImage.center.x = self.view.frame.width - 100 
     }, completion: nil) 
} 

@IBAction func buttonTapped(sender: AnyObject) { 

    let positionX: CGFloat = gemCloudImage.layer.presentationLayer()!.frame.midX 
    let positionY: CGFloat = gemCloudImage.layer.presentationLayer()!.frame.midY 
    print(positionX) 
    print(positionY) 

    let chair = UIImageView() 
    chair.image = UIImage(named: "CHAIR1") 
    chair.frame = CGRectMake(positionX, positionY, 50, 50) 
    chair.frame = CGRect(x:positionX, y:positionY, width:50, height:50) 
    self.view.addSubview(chair) 

} 
+0

サブビューを追加するたびに、この行はクラウドの位置を変更します。 'gemCloudImage.center.x = 100' – Desdenova

答えて

2

Here is a gif from the projectviewDidLoadviewDidLayoutSubviewsでコードを移動します。それはあなたの問題を解決するはずです。

新しいサブビューを追加するたびにviewDidLayoutSubviewsメソッドが呼び出されます。

+0

私は、雲の最初のX位置をアニメーション関数に置き、それをviewDidLoadに移動しました。今はかなりうまく動作しています! – Jackster

+0

http://www.giphy.com/gifs/3oEjHVW8bZRS3Teysg – Jackster

関連する問題