2013-09-06 2 views
1

위의 제목에서 이미 언급했듯이 uiscrollview이 스크롤되는 동안 이미지 배경을 애니메이션으로 바꿔서 다른 이미지로 바꿔야합니다. 내 uiviewcontroller 계층 구조는 간단하다uiscrollview를 스크롤 할 때 이미지 배경을 변경하는 방법은 무엇입니까?

의 UIViewController --->있는 UIImageView를 --->있는 UIScrollView있는 UIScrollView에

추가 정보 : 1. 내있는 UIScrollView 간단한 uilabel 일부 uiimageview을 포함 (단지 작은 부분은 하위보기 uiscrollview). 2. 페이징 사용 가능 3. 수평으로 스크롤 (해당 문제 인 경우)

이렇게 누군가가이 방법을 수행하는 방법을 알려주십시오. 메신저 초보자부터 간단한 단서를 많이 얻으실 수 있습니다 만, 여기 모든 주인님 들께서 배우고 싶습니다.

모든 도움을 주셔서 대단히 감사 드리며 좋은 하루 되시기 바랍니다.

+0

이미지 배경은 어떻게 만듭니 까? UIImageView를 뷰 전체에 걸쳐 사용합니까? 아니면 프로 그램으로 설정합니까? – CaptJak

+0

예, 저는 uiimageview를 사용하여 뷰 컨트롤러를 채 웁니다. – redribbon

답변

1

도 (IMO 깔끔한)이 일을하는 또 다른 방법이있다 테스트해야 사절 :

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    UIImage * toImage = [UIImage imageNamed:@"myname.png"]; 
    [UIView transitionWithView:self.view 
       duration:5.0f 
       options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
       self.imageView.image = toImage; 
       } completion:nil]; 
} 

편집

여러 이미지/페이지의 경우

사이에 앞뒤로 전환

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

이렇게하면 페이지를 변경할 때 충돌이 없어집니다.

이미지를 적절히 변경하려면 switch 문을 사용합니다. 이는 페이지와 숫자를 연결해야한다는 것을 의미합니다. 애플이있는 UIScrollView의 속성으로이 포함되지 않았기 때문에, 당신은 사용하여 데이터를 직접 얻을 수 있습니다

int page = scrollView.contentOffset.x/scrollView.frame.size.width; 

을 그리고 함께 좋은 방법이 모두를 추가 :

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    int page = scrollView.contentOffset.x/scrollView.frame.size.width; 

    //Use the switch to set the variable (toImage) depending on the page 
    switch (page){ 
        case 0: UIImage * toImage = [UIImage imageNamed:@"imageOne.png"]; 
        break; 
        case 1: UIImage * toImage = [UIImage imageNamed:@"imageTwo.png"]; 
        break; 
        case 2: UIImage * toImage = [UIImage imageNamed:@"imageThree.png"]; 
        break; 
        case 3: UIImage * toImage = [UIImage imageNamed:@"imageFour.png"]; 
        break; 
       } 

     //use the variable (toImage) and perform the transition from the current image 

     [UIView transitionWithView:self.view 
            duration:5.0f 
            options:UIViewAnimationOptionTransitionCrossDissolve 
            animations:^{ 
            self.imageView.image = toImage; 
            } completion:nil]; 
} 

I의 천국 위의 코드를 테스트하지 않았지만 C 및 Obj C에 대한 지식으로 작동해야합니다.

+0

감사합니다 captjak,이 하나의 작품. 하지만 내가 uiscrollview에서 4 페이지 (페이징 가능)를 가지고 있고 각 페이지가 다른 이미지를 나타내 길 원한다면 어떻게해야합니까? – redribbon

+0

@redribbon, 내 편집을 확인하십시오. 더 이상 코드와 지불 내;) – CaptJak

+0

와우, 정말 고마워. 이 코드는 실제로 제가 효과를 달성하도록 도와줍니다. 여전히 약간의 작품이 필요하지만 쉽게. 그래서 네, 스크롤 대신에 didenddecelerating을 사용합니다. 단서를 주셔서 감사합니다. 또한 케이스 1 대신 케이스 0에서 시작해야합니다. 그렇지 않으면 두 번째 페이지가 변경되지 않습니다. 마지막 케이스는 각각 대괄호 또는 코드를 추가해야합니다. D (예 : 케이스 1 : {} 중단 ; .......... 좋아, 나는 너에게 hehehehee에게서 종이 수표 지불을 얻고 싶지 않기 때문에 나는 너를 더 이상 괴롭히지 않을 것이다 : p – redribbon

1

나는이 코드를 시도 할 수 있다고 생각

1 단계 :의 UIViewController에 UIScrollViewDelegate 추가

2 단계 : UIViewController에 (XIB 또는 스토리 보드)에있는 UIScrollView 대리자를 무관

3 단계 : 구현 컨트롤러에서이 대리자 메서드를 구현합니다.

-(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
     [UIView animateWithDuration:0.5 
        animations:^{ 
         [self<UIImageView> setAlpha:0]; 
        } 
    ]; 

    [self<UIImageView> setImage:<Your second image>] 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         [self<UIImageView> setAlpha:1]; 
        } 
    ]; 

} 

아마도 scrollViewDidScroll : de 더 현명한

관련 문제