2012-05-29 4 views
3

내가 만들고있는 앱에서 버튼을 오프 스크린으로 시작하고 화면으로 이동하려고합니다. 내가 오프 스크린 버튼으로 시작하는 방법을 잘 모르겠어요,하지만 난 알아낼 일단, 나는 아래의 코드 같은 것을 할 수 있다는 것을 알고 :코어 애니메이션 화면 밖 애니메이션에 화면 꺼짐

[UIView beginAnimation:@"animate" context: nil]; 
[UIView setAnimationDuration:3]; 
self.myButton.frame = CGRectMake (20, 100, 40, 80); 
//Other animations 
[UIView commitAnimations]; 

또한이 라인 [UIView beginAnimation:@"animate" context:nil];에, 컨텍스트 매개 변수입니다 CGContextRef를 묻는다면?

답변

5

버튼을 화면에서 애니메이션으로 변경하는 방법을 묻는 것으로 가정하면, 버튼 원점 위치를 화면 밖에있는 좌표로 설정하면됩니다.

self.myButton.frame = CGRectMake(-80, 100, 40, 80); 

일단 작업을 완료하면 게시 한 코드를 사용하여 화면에 애니메이션을 적용 할 수 있습니다. 버튼이 첫 번째 위치에서 두 번째 위치로 이동한다는 것을 명심하십시오. 즉, 사용 된 좌표를 사용하면 버튼이 y 위치가 변경되지 않고 왼쪽에서 화면으로 이동합니다. 더 멀리 떨어져있는 오프 스크린은 버튼을 빠르게 움직이면 setAnimationDuration에 할당 된 시간에 화면으로 이동해야합니다. 버튼이 화면 밖으로 순간 이동 한 다음 해당 코드를 사용하는 경우에 다시 밀어 것처럼 보일 화면에 이전 인 경우

그래서, 왼쪽

또한
self.myButton.frame = CGRectMake(-80, 100, 40, 80); 
// begin animation block  
[UIView beginAnimations:@"animate" context: nil]; 
[UIView setAnimationDuration:3]; 
self.myButton.frame = CGRectMake (20, 100, 40, 80); 
// commit frame changes to be animated 
[UIView commitAnimations]; 

에서 화면에 애니메이션합니다.

아, 그리고 컨텍스트에 대한 질문에 대답하기 위해 CGContextRef 일 필요는 없으며 모든 데이터 유형이 될 수 있습니다 (객체 및 원시 객체가 아닌 한). 기본적으로 애니메이션이 발생할 때 대리자에게 전달되는 데이터입니다.

3

iOS 4.0 이상에서는 BeginAnimation : context :가 권장되지 않습니다. 블록 기반 방법 중 하나를 사용해야합니다. 원본 프레임이 화면 밖으로 나오도록 설정해야합니다. 당신이 사용하는 경우 (

self.myButton.frame = CGRectMake (340, 250, 40, 80); 
    [self.view addSubview:myButton]; 
    [UIView animateWithDuration:5 delay:.2 options: UIViewAnimationOptionLayoutSubviews animations:^{ 
    self.myButton.frame = CGRectMake (140, 250, 40, 80); 
    //Other animations 
    } 
    completion:nil]; 
+0

해당 코드를 컴파일하고 "self.myButton.frame = [UIColor redColor];"를 추가했습니다. 그래서 나는 시뮬레이터에서 아무런 결과도 볼 수 없었습니다. 무엇이 잘못되었는지 아십니까? 또한 "beginAnimation : context :"가 왜 낙담하나요? 감사합니다 – pasawaya

+0

색상을 설정하려면 프레임을 사용하지 않으려면 self.myButton.backgroundColor = [UIColor redColor]를 사용하십시오. 그러나, 나는 색상을 설정 animatable 수 있다고 생각하지 않습니다. 낙심 한 이유에 관해서, 나는 모른다. 애플이 문서에서 말하는 것이다. – rdelmar

2

당신이 xibs을 사용하지 않는 경우, 당신은 단지 viewDidLoad에서 오프 스크린 버튼의 프레임을 설정할 수 있습니다 여기에 약간의 지연이 오른쪽에서 버튼을 이동하는 예입니다 xibs)보기를 미끄러 :

//create the button or get it from the xib 
CGRect rect = self.myButton.frame; 
rect.origin.x=-200;//or a good point to hide the button 
self.myButton.frame=rect; 

을 다음 당신은 당신이 블록 애니메이션 사용할 수있는 버튼 애니메이션을 적용 할 경우 :를 참조

[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
        self.myButton.frame=SET_YOUR_FRAME; 
    } completion:^(BOOL finished)]; 

컨텍스트의 경우를

관련 문제