У меня есть жест, действие которого перемещает UIView в точку B из точки A. Как добавить хороший переход UIView, перемещающийся из точки A в точку B. Я глядя на то, что он медленно перемещается из точки А в точку В. Как мне это сделать? На данный момент, чтобы переместить элемент я установить рамку в точку Б.Добавить анимацию в uiview, перемещаясь из точки A в точку B
ответ
проверить этот код и установите рамку, что вы хотите
[UIView animateWithDuration:0.75 animations:^{
button.frame = CGRectMake(10, 70, 100, 100);
}];
Вы можете добиться того, что с помощью animateKeyframesWithDuration
или animateWithDuration:animations
, но это будет просто линейная интерполяция. Если вы хотите иметь больше контроля над анимацией я рекомендую вам взглянуть на MTAnimation это действительно мощный и простой в использовании Lib для достижения красивых анимаций
Приветствия
Если вы используете автоматическую раскладку (и вы почти наверняка - это по умолчанию), то решение @PinkeshGjr s, вероятно, будет иметь проблемы. С помощью AutoLayout вы не можете напрямую манипулировать рамкой представления. В какой-то момент после перемещения рамки ограничения вида могут отловить его.
Вместо этого вы хотите создать ограничения, которые управляют свойствами/свойствами, которые вы хотите оживить (в этом случае - позиция x и y) и перетащить управление из ограничений в заголовок контроллера вашего вида для создания точек.
Затем вы хотите изменить постоянное значение на ограничения и вызвать layoutIfNeeded
внутри вашего кода анимации. Что-то вроде этого:
buttonXConstraint.constant = 100;
buttonYConstraint.constant = 100;
[UIView animateWithDuration:0.75 animations:^{
[self.button layoutIfNeeded];
}];
Код выше предполагает, что вы создали 2 ограничений торговых точек и назвал их buttonXConstraint
и buttonYConstraint
.
Это должен быть правильный ответ. Давай, мы в 2016 году, все ДОЛЖНЫ использовать ограничения. Я был бы очень рад, если Apple полностью удалит фреймворк из Xcode. –
Очень хороший вспомогательный метод для анимационного просмотра.
Что я определяю _animation1 и _animationInProgress как? – TheHellOTrofasdasd
, если вы хотите что-то сделать по завершении анимации, вы можете сделать это, просто удалите _animationInProgress – PinkeshGjr
Я получаю undefined идентификатор для _animation1. Я просто удалю это, если просто хочу анимацию, но потом ничего не произойдет? – TheHellOTrofasdasd