썸네일 프레임과 전체 화면 프레임 사이에 대화식 애니메이션을 만들려고합니다. 위쪽으로 이동하면 양방향으로 프레임이 커지므로 (전체 화면에 도달 할 때까지) 아래로 이동하면 반대 방향으로 이동합니다. YouTube가 동영상 플레이어를 움직이는 방식과 매우 유사합니다.프레임 간의 제스처 구동 애니메이션
나는UIPanGestureRecognizer
및 인식기 상태가
UIGestureRecognizerStateEnded
때, 활성화 그래서 같은
POPSpringAnimation
를 사용하여 시도
:
- (void)didPan:(UIPanGestureRecognizer *)recognizer
{
CGPoint point = [recognizer translationInView:self.view.superview];
self.view.center = CGPointMake(self.view.center.x, self.view.center.y + point.y);
[recognizer setTranslation:CGPointZero inView:self.view.superview];
if (recognizer.state == UIGestureRecognizerStateEnded)
{
CGPoint velocity = [recognizer velocityInView:self.view.superview];
// Initaite POPSpringAnimation using velocity and target frame
// either fullscreen or thumbnail
}
}
이것의 효과는 볼의 중심은 그 크기가됩니다 패닝 동안 업데이트 만 가져옵니다이다 이동을 중지 한 후에 만 변경이 시작됩니다. didPan:
에서 프레임의 크기를 수동으로 조정할 필요가 없습니다.
단순히 프레임 A에서 프레임 B로 이동하는 패닝 구동 애니메이션을 만들 수 있습니까?
This 프레임 워크는 거의 동일하지만 애니메이션은 대화 형이 아닙니다. 같은 일이 this 대답에 간다.
감사합니다. 제스처 인식기의 속도를 존중하는 방법이 있습니까? 예에서 슬라이더를 가볍게 치기 만하면 애니메이션이 즉시 멈 춥니 다. 그것의 손가락을 벗어. POP와 UIView의 애니메이션 메서드 모두 초기 속도로 애니메이션을 초기화 할 수 있지만 UIView Property Animator에서 이러한 기능을 지원하지는 못합니다. –
손가락을 뺄 때 슬라이더가 계속 움직이지 않습니다. 그들은 속도의 개념을 가지고 있지 않습니다. 원하는 것을 수행하는 자체 컨트롤을 작성한 다음 원하는대로 애니메이션을 제어하는 방법을 찾아야합니다. 제스처 동작을 한 후 일정한 속도로 작동 시키거나 감속 시키시겠습니까? –
사실, UISpringTimingParameters의 인스턴스를 UIViewPropertyAnimator에 전달하여 속도를 사용할 수 있다는 것을 발견했습니다. 고마워, 고마워. UISpringTimingParameters에는 initialVelocity에 대한 인수가 있습니다. –