2011-11-17 2 views
0

나는 uiview 애니메이션의 가장 일반적인 솔루션처럼 페이드 인하거나 페이드 아웃하고 싶지 않습니다. 사라질 때까지 uiview 크기를 작게 조정하고 같은 방식으로 되돌아오고 싶습니다. 또 다른 방법은 그것의 모든 객체 (UIView)와 카메라를 가까이에서 가리키는 카메라를 가지고 있고 카메라가 백업하고 테이블이 더 작아지면 백업하는 방법이 더 많다는 것입니다. 그래서 내가 주로 uview 전체가 물 속으로 가라 앉고 다시 떠있는 내 애플 리케이션이라는 제목입니다. 다행히도 나는 튜토리얼이나 해결책에 대한 누군가의 제안을 찾을 수있을 것이다. 모든 것이 화면 중앙/가운데에서 크기가 조절되고 축소됩니다.iphone UIview 애니메이션의 크기가 물 속에서 사라지고 다시 떠오름.

업데이트 *** 나는 화면의 임의의 위치에서 축소하고 화면의 임의의 위치에서도 나타납니다. 은 다른 클래스 내 하위 뷰 MAINVIEW 에있는 viewDidLoad된다 (보기 = [보기 ALLOC] initWithFrame : CGRectMake (0, 40, 300, 300)])

답변

2

이 시도 화면에 어떤 시점의 중앙 이상 : 나는 애플의 문서에서 읽은

CGRect originalFrame = view.frame; 

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{ 
    CGRect frame = view.frame; 
    frame.origin = view.center; 
    frame.size = CGSizeMake(0, 0); 
    view.frame = frame; 
} completion:^(BOOL finished) { 
    // Do something with the view 

    [UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{ 
     view.frame = originalFrame; 
    } completion:^(BOOL finished) { 
     return; 
    }]; 

    return; 
}]; 
+0

시간 내 주셔서 감사합니다. 나는 이것을 시도해 보았고 다른 클래스의 서브 뷰 (View = [[View alloc] initWithFrame : CGRectMake (0, 40, 300, 300)];)를 오른쪽 아래로 원래 프레임으로 이동했다. 그것의 가까운하지만 난 그것을 축소하고 대신 오른쪽과 뒤로 이동하는 대신에 돌아오고 싶습니다. 나는 또한 무작위 위치 부분의 내 게시물을 업데이 트했습니다. – merrill

+0

좋아,'clipsToBounds'를'YES'로 설정해보십시오.하지만 이상한 결과가 발생할 수 있습니다. 만약 그렇다면, 알려주세요. 나는 당신을 위해 또 다른 대답을 준비했습니다. – aopsfan

+0

훨씬 더 잘 작동하지만 축소되지 않았습니다. 그것은 박스에서 사라지고 오른쪽 아래로 가고있었습니다 (검은 공원의 아래쪽과 오른쪽) 당신은 사라질 때 그 변을 볼 수 있습니다. 또한 임의의 위치에서 사라지고 임의의 위치로 표시되기를 희망 함). – merrill

0

하면 사이즈 프레임을 수축에 의한 영향을 미칠 수있다 (0,0) view는 당신이 장난하는 도면이다

// assume float cx,cy are defined as center coordinates of your animation (ie where your image shrinks and grows from) 
// assume CGRect animFrame is defined as the starting coordinates of your animationView 
// assume you have outlet to animationView 

// to shrink 
     [UIView beginAnimations:@"WaterAnim" context:nil]; 
     [UIView setAnimationDuration:0.33]; 

     animationView.frame = CGRectMake(cx,cy, 0,0); 

     [UIView commitAnimations]; 
// to grow 
     [UIView beginAnimations:@"WaterAnim" context:nil]; 
     [UIView setAnimationDuration:0.33]; 
     animationView.frame = animationFrame; 
     [UIView commitAnimations]; 
+0

는 그' beginAnimations :''commitAnimations' 메서드는 더 이상 지원되지 않습니다. '[UIView animateWithDuration : animations :]'와 같은 메소드가 권장됩니다. – aopsfan