在Swift中添加子视图时,如何阻止动画重置



我试图在云的位置制作物品。到目前为止,我对云进行了动画重复,我想要它的方式,但是当我产生一个项目时,云动画从一开始就重置。

添加subview时,我的选择是什么?

这是项目的gif

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

viewDidLayoutSubviews中的代码移至viewDidLoad。那应该解决您的问题。

每次添加新子视图时,方法viewDidLayoutSubviews都会调用。

最新更新