У меня есть UIView, это круг. Это все приложение - я могу перемещать круг вокруг экрана, используя UIPanGestureRecognizer.
Теперь я не хочу, чтобы мой круг мог быть вытащен с экрана. Например, если я перетаскиваю круг вправо, он должен прекратить перемещать круг, когда правый край попадает в край окна.Остановить UIView от выхода экрана
Вот мой код:
switch rec.state {
case .Began:
x = fingerLocation.x - (myView?.center.x)!
y = fingerLocation.y - (myView?.center.y)!
break
case .Changed:
myView?.center.x = fingerLocation.x - x
myView?.center.y = fingerLocation.y - y
if (myView?.center.x)! + (myView!.bounds.width/2) >= view.bounds.width {
myView?.center.x = view.bounds.width - myView!.bounds.width/2
}
break
case .Ended:
myView?.center = CGPointMake(fingerLocation.x - x, fingerLocation.y - y)
break
}
Этот код работает, если я перетащить круг медленно к краю. Если я быстро перетаскиваю, кружок перейдет через край и снова вернется в поле зрения второго состояния .Changed
. Как я могу остановить круг, когда-либо перешагнувший край?
Не могли бы вы, возможно, опубликовать некоторые псевдокод? Я занимаюсь этим пару часов с небольшим успехом. – MortalMan
Спасибо! Как вы можете использовать x, не зная, что это такое? – MortalMan
Что-то вроде кода, который я добавил в свой ответ. Может быть сокращено, я сделал его более подробным для ясности. – Mundi