2010-04-18 8 views
0

첫 번째 iPhone 기본 앱 (초보 Objective-C)을 만들었습니다. 내 주 메뉴 제목 화면에서 배경 이미지가 천천히 왼쪽으로 움직 이길 원합니다. 배경 이미지를 바둑판 식으로 배열하고 움직일 수 있습니까? 나는 기본적으로 내 구름이 배경을 흐트러 뜨리려고 노력하고있다. 어떻게이 일을 완수하겠습니까?iPhone 앱 배경 이미지 이동

답변

0

UIScrollView로 뭔가 똑똑한 작업을 할 수 있다고 생각합니다. 뷰가로드되면 배경 루프에서 뷰 내용 오프셋을 애니메이션으로 만들 수 있습니다. 스크롤보기 및 타일링에 대한 좋은 힌트는 ScrollViewSuite 샘플 코드를 확인하십시오. 희망이 도움이됩니다.

2

UIImageView를 화면에 추가합니다 (화면의 다른 모든 항목 아래에 배치). 구름 이미지를 UIImageView에 넣고 프레임 값을 애니메이션화하여 화면 전체에서 움직이십시오.

cloudsImage.frame = CGRectMake(0,0,320,100); // depends on your image 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:3.0f]; // duration affects how fast it moves 

cloudsImage.frame = CGRectMake(-320,0,320,100); // moves left off the screen 

[UIView commitAnimations]; 

또한 같은 이미지를 애니메이션과 같은에서 오른쪽에서 밀어 수 :이 같은

무엇인가 (이 코드는 해보지 않은 것입니다), 이미지보기 애니메이션 것은 화면을 가로 질러 왼쪽으로 이동합니다 첫 번째는 왼쪽에서 나가서 오른쪽에서 오는 구름의 연속 흐름으로 나타나게합니다.

cloudsImage1.frame = CGRectMake(0,0,320,100); // depends on your image 
cloudsImage2.frame = CGRectMake(320,0,320,100); // start off the right edge 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:3.0f]; // duration affects how fast it moves 

cloudsImage1.frame = CGRectMake(-320,0,320,100); // moves left off the screen 
cloudsImage2.frame = CGRectMake(0,0,320,100);  // moves left onto the screen 

[UIView commitAnimations]; 
0

이 효과를 얻기 위해 블록 기반 애니메이션을 사용하여 비슷한 효과를 나타 냈습니다. 각 애니메이션 블록은 별도의 기능으로 정의되었습니다.

두 이미지가 화면과 동일한 크기라고 가정합니다.

하나의 이미지가 화면에서 완전히 시작되면 하나의 이미지가 화면의 왼쪽에서 시작하여 오른쪽이 화면의 왼쪽 테두리와 맞 춥니 다 (즉, 완전히 완전히 왼쪽에서 벗어남). 화면상의 이미지 'A'와 오프 스크린 이미지 'B'를 부르 자.

function1() 첫 번째 블록은 두 이미지의 화면 너비를 오른쪽으로 이동합니다. 완료되면 화면 ('A')에서 벗어난 이미지를 화면 왼쪽으로 다시 설정 한 다음 function2()를 호출합니다.

function2() 두 번째 블록은 두 이미지의 화면 너비를 오른쪽으로 이동합니다. 완료되면 화면 ('B')에서 화면 왼쪽으로 돌아간 이미지를 다시 설정 한 다음 function1()을 호출합니다.

여기에 첫 번째 함수는 다음과 같습니다

-(void)animate_1 
{ 
[UIView animateWithDuration:roadTimerPeriod delay:0.0 
    options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionAllowUserInteraction 
    animations: ^{ 
    // frame 1 moves off bottom 
imageAnimatedRoad1.transform = CGAffineTransformTranslate(imageAnimatedRoad1.transform,0,480); 
// frame 2 moves onto top 
imageAnimatedRoad2.transform = CGAffineTransformTranslate(imageAnimatedRoad1.transform,0,480);  
      } 
completion:^(BOOL finished) 
      { 
      // reset frame 1 ready to move on 
      imageAnimatedRoad1.frame = CGRectMake(0,-480,320,480); 
      [self animate_2]; 
      } ]; 
} 

당신이 좋은 해결책이라고 생각, 또는 내가 눈부시게 명백한 놓친 게 있나요?