Встряхните UIView … но используя UIKit Dynamics

Есть много ситуаций, когда вам нужно «встряхнуть» UIView.

(Например, «обратить внимание дочернего пользователя на элемент управления», «соединение медленное», «пользователь вводит неверный ввод» и т. Д.).

Можно ли это сделать с помощью UIKit Dynamics?

Так что вам придется …

  • взгляните, скажем, на 0,0

  • добавить концепцию весны

  • дайте ему толчок, скажите «левой»,

  • он должен откидываться назад и вперед на пружину, в конечном итоге снова оседая на 0,0

Это возможно? Я не смог найти пример в демонстрациях Apple. ура

Обратите внимание, что как Нильс объясняет ниже, весна не обязательно является «физическим чувством», которое вы хотите для некоторых из этих ситуаций: в других ситуациях это может быть идеально. Насколько мне известно, вся физика в собственных приложениях iOS (например, Messages и т. Д.) Теперь использует UIKit Dynamics, поэтому для меня стоит иметь дескриптор «UIView bouncing on a spring».


Чтобы быть понятным, конечно, вы можете сделать что-то «похожее», просто с анимацией. Пример…

Но это просто не имеет того же «физического ощущения», что и остальная часть iOS.

-(void)userInputErrorShake { [CATransaction begin]; CAKeyframeAnimation * anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; anim.values = @[ [NSValue valueWithCATransform3D: CATransform3DMakeTranslation(-4.0f, 0.0f, 0.0f) ], [NSValue valueWithCATransform3D: CATransform3DMakeTranslation(4.0f, 0.0f, 0.0f) ] ]; anim.autoreverses = YES; anim.repeatCount = 1.0f; anim.duration = 0.1f; [CATransaction setCompletionBlock:^{}]; [self.layer addAnimation:anim forKey:nil]; [CATransaction commit]; } 

One Solution collect form web for “Встряхните UIView … но используя UIKit Dynamics”

Если вы хотите использовать UIKit Dynamics, вы можете:

  • Сначала определите управляющий аниматор:

     @property (nonatomic, strong) UIDynamicAnimator *animator; 

    И создайте экземпляр:

     self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 
  • Во-вторых, добавьте поведение приложения в этот аниматор для просмотра в текущем местоположении. Это заставит его вернуться назад, когда будет сделано нажатие. Вам придется играть с damping и значениями frequency .

     UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:viewToShake attachedToAnchor:viewToShake.center]; attachment.damping = 0.5; attachment.frequency = 5.0; [self.animator addBehavior:attachment]; 

    Эти значения не совсем правильные, но, возможно, это отправная точка в ваших экспериментах.

  • Примените поведение push ( UIPushBehaviorModeInstantaneous ), чтобы UIPushBehaviorModeInstantaneous его. После этого поведение привязки приведет к его возврату назад.

     UIPushBehavior *push = [[UIPushBehavior alloc] initWithItems:@[viewToShake] mode:UIPushBehaviorModeInstantaneous]; push.pushDirection = CGVectorMake(100, 0); [self.animator addBehavior:push]; 

Лично я не сумасшедший об этой конкретной анимации (затухающая кривая мне не подходит). Я бы склонялся к использованию блочной анимации, чтобы переместить ее в одном направлении (с UIViewAnimationOptionCurveEaseOut ), по завершении инициируйте другую, чтобы переместить ее в противоположном направлении (с UIViewAnimationOptionCurveEaseInOut ), а затем по завершении этого используйте использование использования usingSpringWithDamping для animateWithDuration для перемещения он возвращается в свое первоначальное место. ИМХО, что дает кривую, которая больше похожа на «трястись, если ошибается».

  • Как заставить мое представление, которое манипулирует UIPushBehavior, не вращается так сильно? Это абсурдная сумма
  • UIDynamicKit с приложением и толканием вызывает длительное время колебания
  • Внедрение UIKitDynamics для перетаскивания изображения с экрана
  • Как я могу ускорить работу UISnapBehavior?
  • UICollectionView. Динамика UIKit Dynamics «падает» с SAME DYNAMICS в виде коллекции
  • Почему UIKit Dynamics не работает?
  • UIDynamics и Autolayout
  • Динамика UIKit: распознавание закругленных фигур и границ
  • Объединение UIAttachmentBehavior и UICollisionBehavior
  • Можно ли приостановить UIDynamicAnimator без удаления и добавления UIDynamicBehaviours?
  • Динамика UIKit на UITableView
  • Interesting Posts

    Xamarin Forms iOS – PickerView с выбором нескольких строк

    Переименование проекта iOS в Xcode изменяет устройство на «Мой Mac»,

    Как добавить начальное представление в файл раскадровки?

    Xamarin iOS Ошибка при попытке отладки приложения на iPhone 5

    iOS: поиск правильного размера шрифта для установки в UILabel в зависимости от его размера

    SQLite вставляет данные в объекте c

    Может ли UIView знать, когда он находится на экране

    UIDatePicker выберите месяц и год

    iOS 64-разрядное приложение с двойными размерами

    Как назначить отношения CoreData «многие ко многим» в Swift?

    Вопрос об отказе на Xcode 6.3

    Как встраивать видео YouTube в iOS и воспроизводить его прямо в UIWebview без полноэкранного режима

    ios Как добавить нижнюю границу и боковую конструкцию в текстовое поле

    Сообщение iOS XMPP, полученное на экране беседы

    Проблемы с удалением Identity из keychain

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.