我已经为图像做了布局。所以我没有任何CGPoint x和y值。 Storyboard picture 正如你在图片上看到的那样,我制作了5个圆圈和一个主圆圈。当用户打开应用程序时,我想让这5个圆圈来自主圆圈后面。我做了很多研究,我发现我可以使用弹簧动画方法,因为它看起来更逼真,物理等等。然而,它只是没有成功。
首先,我改变圆圈1的中心并将其发送到主圆圈的背面(它没有工作)由于失败,圆圈不会从后面上升。
我不知道为什么我无法改变圆圈的位置。是因为我已经做好了布局吗?
这是我的代码:
@IBOutlet weak var mainCircle: UIButton!
@IBOutlet weak var circle1: UIImageView!
override func viewDidAppear(animated: Bool) {
self.circle1.center = self.mainCircle.center
UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.0, options: [] , animations: {
self.circle1.center = CGPointMake(160, 219)
}, completion: nil)
}
请帮我解决这个问题。 非常感谢。
答案 0 :(得分:1)
将options参数设置为[]
,这会在弹簧动画中将选项设置为空。
对于您的动画,请输入以下行:
self.circle1.center = self.mainCircle.center
viewDidLoad()
方法内部。
然后,在弹簧动画中,更改代码,以便使用mainCirle的相对位置计算位置,而不是固定值。像这样:
self.circle1.center = CGPointMake(self.mainCircle.center.x-75, self.mainCircle.center.x-75)
您可以将此点更改为您希望圆圈从主圆圈进入的任何方向。
完整代码:
override func viewDidLoad() {
super.viewDidLoad()
self.circle1.center = self.mainCircle.center
}
override func viewDidAppear(animated: Bool) {
UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.0, options: [] , animations: {
self.circle1.center = CGPointMake(self.mainCircle.center.x-75, self.mainCircle.center.x-75)
}, completion: nil)
}
答案 1 :(得分:0)
有一个非常有用的库来简化值得研究的Spring动画。您可以在下面下载:
https://github.com/MengTo/Spring
我的应用中有很多动画,这让它变得非常简单。您可能希望将所有圆圈设置为中心,然后更改其x,y并使用animateTo()。
答案 2 :(得分:0)
let identityAnimation = CGAffineTransform.identity
let scaleOfIdentity = identityAnimation.scaledBy(x: 0.001, y: 0.001)
slideActionComponentCollectionView.transform = scaleOfIdentity
self.addSubview(slideActionComponentCollectionView)
UIView.animate(withDuration: 0.3/1.5, animations: {
let scaleOfIdentity = identityAnimation.scaledBy(x: 1.1, y: 1.1)
self.slideActionComponentCollectionView.transform = scaleOfIdentity
}, completion: {finished in
UIView.animate(withDuration: 0.3/2, animations: {
let scaleOfIdentity = identityAnimation.scaledBy(x: 0.9, y: 0.9)
self.slideActionComponentCollectionView.transform = scaleOfIdentity
}, completion: {finished in
UIView.animate(withDuration: 0.3/2, animations: {
self.slideActionComponentCollectionView.transform = identityAnimation
})
})
})