如何在Swift中移动iOS层
每次调用如何在Swift中移动iOS层,ios,swift,Ios,Swift,每次调用moveToPosition()函数时,我都试图将包含黑点的层移动到新位置。moveToPosition()函数会被快速调用多次,每次都会计算一个新的位置,因此理想情况下,我会看到点在平滑的路径中移动。我尝试了以下方法: func moveToPosition(newPosition: CGPoint) { print (newPosition.x, newPosition.y, redLayer.position) self.redLayer.position = ne
moveToPosition()
函数时,我都试图将包含黑点的层移动到新位置。moveToPosition()
函数会被快速调用多次,每次都会计算一个新的位置,因此理想情况下,我会看到点在平滑的路径中移动。我尝试了以下方法:
func moveToPosition(newPosition: CGPoint) {
print (newPosition.x, newPosition.y, redLayer.position)
self.redLayer.position = newPosition
}
func moveToPosition(newPosition: CGPoint) {
print (newPosition.x, newPosition.y, redLayer.position)
var movement = CABasicAnimation(keyPath: "movement")
movement.fromValue = NSValue(CGPoint: self.redLayer.position)
movement.toValue = NSValue(CGPoint: toPoint)
movement.duration = 0.3
self.redLayer.addAnimation(movement, forKey: "position")
self.redLayer.position = toPoint
}
从中,我还尝试了以下代码:
func moveToPosition(newPosition: CGPoint) {
print (newPosition.x, newPosition.y, redLayer.position)
UIView.animateWithDuration(0.75, delay: 0, options: .CurveLinear, animations: {
self.redLayer.position = newPosition
}, completion: nil)
}
但也许这段代码不起作用,因为它是用于UIView而不是层的
无论如何,这些都不起作用——从我的打印语句中,我看到newPosition.x和newPosition.y每次都在变化,但点本身在屏幕上不会移动。有什么想法吗?我对iOS非常陌生,因此任何帮助都将不胜感激 A
CALayer
实例是UIKit中每个UIView
实例背后的底层可视对象。移动视图的层或设置其动画时,它不会移动视图,而只移动视图的视觉表示。动画完成后,层将更新以反映视图的实际帧(模型)
要回答您的问题,要移动视图的图层,可以执行两项操作:
UIView.animateWithDuration(0.5) {
movingView.frame = updatedFrame;
}
例如,本文解释了UIKit中的模型/视图分离。什么类型的对象是
redLayer
?在代码中的什么位置调用moveToPosition?CALayer的位置具有隐式动画,因此您不必创建自己的Cabasicanization。看起来您的CABASICANITION没有正确创建,因为它试图更改redLayer
的movement
属性,如果redLayer是CA层,它没有movement
属性(看起来您交换了CABASICANITION中的movement
和position
条目(…)和redLayer.addAnimationredLayer是CALayer()。我在ViewController.swift中的委托方法中调用moveToPosition。如果CALayer有自己的隐式动画,那么我尝试的第一段代码是否接近答案?