2016-04-03 74 views
0

我已经为图像做了布局。所以我没有任何CGPoint x和y值。 Storyboard picture 正如你所看到的,我做了5个圆圈和一个主圆。当用户打开应用程序时,我想让这5个圈子来自主圈后面。我做了大量的研究,并且发现我可以使用弹簧动画方法,因为在物理等方面它看起来更加真实。但是,它只是没有解决。如何将swift动画添加到图像中?

首先我改变circle1的中心并将它发送到主圆的背面(它不起作用)由于失败,圆不会从背后出现。

我不确定为什么我不能改变圆的位置。是因为我已经制定了布局?

这里是我的代码:

@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

将选项参数设置为[],这会在您的弹簧动画中将选项设置为空。


为了您的动画,把这个行:

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

是的。非常感谢。但我仍然无法移动物体。有任何想法吗? –

+0

如果您在视图加载时进行动画制作,请确保您在'viewDidAppear'方法中进行动画制作,而不是'viewDidLoad'方法,因为在viewDidLoad中它将在显示视图之前发生。如果这不起作用,你会显示更多的代码,例如,当你调用它和你的代码的其余部分? – brimstone

+0

谢谢您的回复。我不明白为什么它没有解决。我编辑的问题,以便我可以告诉你我的整个代码。你能再检查一次吗?首先,我要将所有小圆圈居中放在主圆圈后面,当用户打开应用程序时,我希望小圆圈能够放置原来的位置,我之前进行了自动布局。非常感谢。 –

0

有简化春季动画,是值得研究的一个非常有用的库。您可以在下面下载:

https://github.com/MengTo/Spring

我有很多的动画在我的应用程序,这使得它很容易。您可能想要将所有圆圈设置为中心,然后更改它们的x,y并使用animateTo()。