Возвращение вида в исходное положение после панорамирования
У меня есть вид (курица), который может быть перемещен вокруг, должен вернуться в исходное положение после освобождения. Прямо сейчас, курица просто исчезает, когда закончился panGesture.
Вот мой код:
override func viewDidLoad() {
super.viewDidLoad()
// record original Position
originalChickenPosition = chicken.center
print(originalChickenPosition) // works fine
view.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "handlePan:"))
}
func handlePan(panGesture: UIPanGestureRecognizer){
switch panGesture.state{
case .Began:
// start flying
case .Changed:
// follow the pan
let dCenter = panGesture.translationInView(view)
chicken.center = CGPointMake(chicken.center.x + dCenter.x, chicken.center.y + dCenter.y)
panGesture.setTranslation(CGPointZero, inView: view)
case .Ended:
// fly back
if originalChickenPosition != nil{
chicken.center = originalChickenPosition!
}
default: break
}
}
Я нашел это: возвращая вид в исходное положение после жеста панорамирования, быстро, но, похоже, это другая проблема, я был бы рад, если бы мой взгляд отскочил назад.
Любые предложения приветствуются.
1 ответ
Решение
Там должны быть автолайты, установленные для представления. Если ДА, убедитесь, что вы обновили ограничения после того, как установили исходную позицию.
func handlePan(panGesture: UIPanGestureRecognizer){
switch panGesture.state{
case .Began:
// start flying
case .Changed:
// follow the pan
let dCenter = panGesture.translationInView(view)
chicken.center = CGPointMake(chicken.center.x + dCenter.x, chicken.center.y + dCenter.y)
panGesture.setTranslation(CGPointZero, inView: view)
case .Ended:
// fly back
if originalChickenPosition != nil{
chicken.center = originalChickenPosition!
}
**self.chicken.setNeedsUpdateConstraints()**
default: break
}
}