2013-06-11 3 views
4

UIScrollView에서 zoomScale을 다시 1로 설정해야하지만 애니메이션이 필요합니다. 나는 이것을 위해 CABasicAnimation을 사용할 수 있다고 생각했지만 NSValue는 "valueForFloat"또는 "valueForNSNumber"를 가지지 않으므로 CABasicAnimation의 animation.fromValue 및 animation.toValue에 사용할 항목을 모르겠습니다. 이 문제를 해결할 더 좋은 방법이 있습니까?UIScrollView에서 zoomScale을 애니메이션하는 방법

편집 :이 기능을 추가하려면 무엇을 추가해야합니까?

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"zoomScale"]; 
     animation.duration = 2.3; 
     animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];   
     animation.fromValue = [NSNumber numberWithFloat:myScrollview.zoomScale]; 
     animation.toValue = [NSNumber numberWithFloat:1.0]; 

     [myScrollview.layer addAnimation:animation forKey:@"zoomScale"]; 
+0

시도는있는 ScrollView에없는 애니메이션 뷰에 애니메이션을 추가 할 수 있습니다. – danypata

답변

11

당신은 두 번째 매개 변수로 YES을 통과 -[UIScrollView setZoomScale:animated:]를 사용이 간단한 일을 위해 CAAnimation에 의존 할 필요가 없습니다.

어쨌든 zoomScaleCAAnimation에 의해 직접 애니메이트 할 수있는 속성이 아니기 때문에 애니메이션의 일부 부분을 수정하려면 "UIView animation"을 사용하십시오.

다음과 같이 해 보셨습니까? 내가 스크롤의 레이어가 변경되지 않고 확대 된 뷰의 레이어가 변경되는 것을 생각하기 때문에

[UIView animateWithDuration:2.0 
         delay:0 
        options:UIViewAnimationOptionBeginFromCurrentState 
       animations:^{ [myScrollView setZoomScale:1.0f animated:NO]; } 
       completion:nil]; 
+0

내 애니메이션 시간을 설정하고 싶습니다. setZoomScale의 기본 애니메이션 시간을 원하지 않습니다 : animated : – soleil

+0

'fromValue'와'toValue'의 값으로 NSNumber 인스턴스를 사용해야합니다. – yonosoytu

+0

위의 편집을 참조하십시오. – soleil

관련 문제