我的目标是在动画中转换UIView。问题是水平平移需要使用弹簧/反弹动画进行动画处理,而垂直平移需要在没有它的情况下进行动画处理。
以下代码不起作用,因为第二个转换将取代第一个,但我想说明我想要实现的目标。
是否可以在不直接动画视图框的情况下解决这个问题?
UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.01, options: nil, animations: { () -> Void in
someView.transform = CGAffineTransformMakeTranslation(-100, 0)
}) { (completed) -> Void in
}
UIView.animateWithDuration(0.5, animations: { () -> Void in
someView.transform = CGAffineTransformMakeTranslation(0, 100)
})
答案 0 :(得分:0)
执行此操作的一种方法是使someView
成为另一个应用第二个转换的视图的子项。
UIView.animateWithDuration(1, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.01, options: nil, animations: { () -> Void in
self.someView.transform = CGAffineTransformMakeTranslation(-100, 0)
}) { (completed) -> Void in
}
let someOtherView = UIView(frame: self.view.frame);
self.view.addSubview(someOtherView);
someOtherView.addSubview(someView);
UIView.animateWithDuration(1, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.01, options: nil, animations: { () -> Void in
someOtherView.transform = CGAffineTransformMakeTranslation(0, 100)
}) { (completed) -> Void in
}