몇 가지 방법으로 해결할 수 있습니다. 사용중인 애니메이션 코드 기술은 iOS4에서 대체되었으며 CGAffineTransform의 사용은 (내 취향에 대해) 정확히 이상적이지 않습니다.
- (IBAction)expand:(id)sender {
grow.transform = CGAffineTransformMakeScale(1,1);
CGFloat scale = 5.0;
CGFloat moveDistance = ([[UIScreen mainScreen] bounds].size.height - (grow.frame.origin.y*scale)) - grow.frame.origin.y;
CGAffineTransform transformation = CGAffineTransformMakeScale(scale, scale);
transformation = CGAffineTransformTranslate(transformation, 0, moveDistance);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:5.7];
grow.transform = transformation;
[UIView setAnimationRepeatAutoreverses:YES];
self.view.transform = CGAffineTransformIdentity;
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
grow.alpha = 1.0;
[UIView commitAnimations];
}
내가 추천 :이 방법을 사용하기를 원한다면
그럼에도 불구하고,이 (:이 테스트를하지 않은, 그것은 추측 다소의 주)와 비슷한 뭔가를 할 수 비록 블록 기반의 애니메이션 메소드를 사용하고 있지만 훨씬 더 간단하고 읽기 쉽습니다. 또한, 확대를 위해 CGAffineTransform을 사용하면 문제가 발생할 수 있습니다 (예를 들어, UILabel의 프레임 크기를 늘리면 단순히 텍스트의 위치가 변경됩니다 .CGAffineTransform을 사용하면 텍스트가 확대되어 픽셀 화됩니다). 당신은 이것과 비슷한 것을 할 수 있습니다 :
CGFloat scale = 5.0;
CGRect originalFrame = grow.frame;
CGRect targetFrame = CGRectMake(
originalFrame.origin.x-(originalFrame.size.width*(scale/2.0)),
[[UIScreen mainScreen] bounds].size.height - (originalFrame.size.height*scale),
originalFrame.size.width*scale,
originalFrame.size.height*scale);
[UIView animateWithDuration:5.7 delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^{
[UIView setAnimationRepeatCount:1]
grow.frame = targetFrame;
grow.alpha = 1.0;
} completion:nil];
먼저 내 질문에 답변 해 주셔서 감사합니다. 나는 그런 빠른 대답을 기대하지도 않았다. 글쎄, 내가 코드의 첫 번째 라인을 시도했지만 두 가지 오류가 있어요 : 1- 함수 호출에 너무 많은 인수, 예상 2, 3이 있습니다. 2 - 함수 호출에 너무 적은 인수, 예상 3, 2가 있습니다. 이상한 애니메이션이 자라면서 축소되고 멀리서 움직입니다. – user2828182
가장 최근의 코드인지 확인하십시오. 몇 번 편집했는데 편집 한 실수 중 하나가 잘못된 메서드에 매개 변수를 전달하는 것입니다 ('CGAffineTransformMakeScale'에는 2 개의 매개 변수가 있어야하고'CGAffineTransformTranslate'에는 3이 있어야합니다.). 두 번째 코드 블록은 자동 반향 (yes, grow, then shrink)을 포함하여 첫 번째 코드 블록과 거의 동일하게 작동해야합니다. 당신은 또한 자동 반전 운동을 원했습니까? – Xono
이제 첫 번째 이미지가 작동하지만 이미지가 완전히 사라질 때까지 아래쪽으로 계속 이동합니다. 내가 정확히 원하는 것은 상반부가 여전히 보이고 다른 반쪽이 사라지고 이미지가 가장 큰 크기에 도달하면 이미지가 멈추는 것입니다. – user2828182