2011-04-07 2 views
1

나는 pushviewcontroller의 애니메이션처럼 보이는 사용자 조치에 대한 응답으로 내보기를 움직이기를 원합니다. 즉, 사용자 동작에 대한 응답으로 뷰가 왼쪽으로 벗어나기를 원합니다. 그러나 새로운 뷰를 생성하고 pushviewcontroller를 사용하여 스택에 푸시하고 싶지 않습니다. 같은 뷰를 재사용하고 데이터를 다시로드하고 싶습니다. 새로운 데이터가 포함 된 다시로드 된 뷰를 오른쪽에서 밀어 넣고 싶습니다. 그러면 pushviewcontroller의 애니메이션이됩니다. 어떻게 할거 니?실제로 pushviewcontroller를 호출하지 않고 pushviewcontroller 애니메이션

도움 주셔서 감사합니다.

답변

2

당신의 ViewController에서이 작업을 수행합니다. 그러면 전체보기가 오른쪽으로 이동 한 다음 2 초 후에 이동합니다. 당신은 어떤 종류의 배경을 가지고 있기 때문에 오직 하위 뷰만 움직일 수 있습니다.

- (void)viewDidAppear:(BOOL)animated 
{ 
    [UIView animateWithDuration:1.2 
        animations:^{ 
         self.view.frame = CGRectMake(320, 0, 320, 480); 
        }]; 

    [self performSelector:@selector(slideBackView) withObject:nil afterDelay:2.0]; 
} 

- (void)slideBackView 
{ 
    [UIView animateWithDuration:1.2 
        animations:^{ 
         self.view.frame = CGRectMake(0, 0, 320, 480); 
        }]; 
} 
+0

감사합니다! 이게 내가 원하는 거의거야. 나는 화면을 화면 밖으로 슬라이드시키고 다시 돌아올 수있다. pushviewcontroller 애니메이션을 시뮬레이트하기 위해 뷰를 왼쪽으로 슬라이드시키고 오른쪽에서 다시 슬라이드합니다. 그러나 두 슬라이드 사이에 배경이 흰색이므로 두 번째보기가 슬라이드되기 전에 첫 번째보기가 슬라이드 오프 될 때까지 기다려야합니다. 두 가지보기를 연결하는 방법이 있으므로 흰색 배경이 표시되지 않습니다. pushviewcontroller 애니메이션? – Paul

+0

예, coure의 두 가지보기로 애니메이션을 수행하십시오. self.view를 사용하지 말고 animation 블록에서 firstView.frame 및 secondView.frame과 같은 것을 사용하십시오. 일부 속성을 추가하고 해당보기를 참조하기 만하면됩니다. –

+0

감사합니다! 당신이 말했듯이 나는 두 개의보기 사이의 공백을 제거 할 수있었습니다. 이렇게하려면 다른 뷰를 만들고 원래 뷰와 함께 애니메이션을 만들었습니다. addSubview를 사용하여 두 번째 뷰를 작성했습니다. 그러나, 이것은 하위 뷰 스택에 뷰를로드하는 것처럼 보입니다. removeFromSuperview를 사용하여 두 번째보기를 무시하려고 시도하면 두 번째보기의 애니메이션이 움직이기 전에 두 번째보기가 제거되므로 두 번째보기의 애니메이션이 작동하지 않습니다. 어떻게 처리 할 수 ​​있습니까? addSubview 이외의 것을 사용해야합니까? 다른 곳에서 removeFromSuperview를 호출해야합니까? – Paul

관련 문제