#ios #animation #uiview #frame
#iOS #Анимация #uiview #кадр
Вопрос:
Я пытаюсь анимировать смену кадра в UIView, где изменяется как происхождение, так и размер. Анимация не выглядит гладкой и имеет эффект упругости. Для этого я использую следующий код
[UIView
animateWithDuration:0.5
animations:^{
self.view.frame = newFrame;
}];
Кажется, что сначала размер меняется очень быстро, а затем происхождение изменяется с указанной продолжительностью анимации, что в конечном итоге приводит к эффекту упругости. Как мне сделать, чтобы это выглядело плавно?
Ответ №1:
Вы могли бы попробовать изменить кривую анимации, возможно, попробовать линейную.
dispatch_async(dispatch_get_main_queue(), ^{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
self.view.frame = newFrame;
[UIView commitAnimations];
});
Комментарии:
1. Я уже пробовал использовать UIViewAnimationCurveLinear, но это не сработало. Размер изменяется немедленно, а затем запускается анимация для изменения положения.
2. вы пробовали использовать весь блок кода? Я только что попробовал это — и размер, и происхождение анимируются плавно одновременно
3. Понял это прямо сейчас. Мне пришлось анимировать все подвиды по отдельности, иначе у него появился этот эффект отскока. Спасибо.
4. это не изменяет размер the self.view. Это только перемещает его.
Ответ №2:
При анимации смены кадров каждого из подвидов по отдельности произошло волшебство. Теперь анимация выполняется очень плавно. Спасибо.