我刚刚开始iOS开发,正在学习Swift和Xcode。我在视图控制器中有一个UIImageView对象,并且想要在两个图像之间切换时将这个UIImageView移动到屏幕上。这是代码:
@IBOutlet weak var anImageView: UIImageView!
@IBAction func beginAnimation(sender: AnyObject) {
let imgListArray:[AnyObject] = [UIImage(named: "img1.png")!, UIImage(named: "img2.png")!]
anImageView.animationImages = imgListArray
anImageView.animationDuration = 0.5
anImageView.image = UIImage(named: "img1.png")
anImageView.startAnimating()
UIView.animateWithDuration(4.0, animations: {
self.anImageView.center = CGPoint(x: 600, y: 600)
}, completion: {finished in
self.anImageView.center = CGPoint(x:80,y:80)})
}
问题在于坐标。 UIImageView在屏幕外启动,不会在(80,80)结束。切换很好。
我想我必须将坐标转换为superview(?)空间,但我尝试这样做并没有成功。例如,我尝试了convertPoint函数,但没有成功。
非常感谢任何指导!
感谢。
答案 0 :(得分:1)
您尚未明确指出想要做什么,所以让我们专注于 所做的代码:
UIView.animateWithDuration(4.0, animations: {
self.anImageView.center = CGPoint(x: 600, y: 600)
}, completion: {finished in
self.anImageView.center = CGPoint(x:80,y:80)
})
该代码说:
无论现在在哪里,都要启动从该点向(600,600)移动的图像视图(除非您在iPad上,否则将在屏幕外)。
当它到达那里时,让它从<(600,600)跳到到(80,80)。
这就是你说的。所以,如果那不是你想要的,那就别说了!
答案 1 :(得分:0)
取消选中自动布局选项现在解决了这个问题。但正确的方法是保持自动布局和动画限制。一旦我开始工作,就会发布解决方案。