moveToPosition()
işlevi çağrıldığında, siyah nokta içeren katmam yeni bir konuma taşınmaya çalışıyorum. moveToPosition()
fonksiyonu, her seferinde hesaplanan yeni bir konumla birçok kez hızlı bir şekilde çağrılır, böylece ideal olarak, noktanın yumuşak bir yoldan geçtiğini görürsünüz. How can I move an image in Swift? itibarenSwift'de bir iOS katmanının taşınması
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
}
, ben de aşağıdaki kodu çalıştı:
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)
}
Ama bir katman bir UIView içindir ve olmadığı için belki de bu kod işe yaramadı Aşağıdaki denedim?
Her neyse, bunların hiçbiri işe yaramadı - print ifademden, newPosition.x ve newPosition.y öğelerinin her defasında değiştiğini görüyorum, ancak noktanın kendisi ekranda hareket etmiyor. Herhangi bir fikir? IOS için çok yeniyim, bu yüzden herhangi bir yardım takdir edilecektir!
Ne tür bir nesne "redLayer"? – aramusss
Kodunuzda hangi noktada moveToPosition'i arıyorsunuz? Bir CALayer'ın Konumunun örtülü bir animasyonu vardır, bu yüzden kendi CABasicAnimation'ı oluşturmanız gerekmez. CABasicAnimation'ınızın, "redLayer" öğesinin "hareket" özelliğini değiştirmeye çalıştığı ve eğer bir "Layer" özelliği taşıdığı bir CA Layer ise, bir "hareket" özelliğine sahip olmadığı (neye benzediğinize benziyor) gibi görünmüyor. CABasicAnimation (...) ve redLayer.addAnimation –
redLayer.addAnimation 've' position 'girdiler redLayer bir CALayer() olduğunu. – tricer123