2011-09-14 6 views
0

UIImageView를 이동하는 것이 가능하고 다른 UIImageView의 프레임과 교차 할 때 다른 UIImageView를 다른 UIImageView로 푸시해야합니까? 나는 그것이 의미가 있기를 바랍니다!가능한 다른 UIImageView 함께 UIImageView 밀어?

가능한 경우이 구현 방법에 대한 아이디어를 제공해 주시겠습니까?

나는 왼쪽 또는 오른쪽으로 X/Y 축에 밀어 프레임과 같은 거리에 같은 방향으로 다른 프레임 이동이에서 프레임은 프레임을 교차

하면 ... 그것은 뭔가를 갈 것이라고 상상한다. 그 논리는 다소 나에게 의미가 있지만, 나는 그것을 코드에서 어떻게 구현할 것인지 확신 할 수 없다.

제공 할 수있는 조언을 보내 주시면 감사하겠습니다. 당신이 더 나은의 스프라이트, 교차로 및 몇 가지 기본적인 물리학적인 Cocos2D 같은 것을 사용하는 것처럼

+0

당신은 슬라이딩과 같은 말인가요? – booleanBoy

+0

그래 ... 기본적으로 하나의 UIImageView를 사용하여 팬 제스처가 움직이는 방향에 따라 왼쪽 또는 오른쪽으로 다른 슬라이드를 슬라이드하는 방법을 찾고 있습니다. – Jason

+0

사용자가 스 와이프를하면 다음 이미지가 현재 이미지를 왼쪽으로 밀어야합니까? – booleanBoy

답변

1

소리 다른 UIView의 하위보기로 일부 클래스의 클래스 멤버로 정의 된 2 개의 UIImageViews (& b)가 있다고 가정합니다.

당신은 addGestureRecognizer을 UIPanGestureRecognizer의 인스턴스를 생성하고 각 UIImageView에 사용하는 방법에 추가하여 각보기에 제스처를 (터치 드래그) 패닝 감지 도움을 얻을 수 있습니다 : 각 UIPanGestureRecognizer을 만들 때

, 당신은 선택을 지정할 필요가 제스처 이벤트를 수신합니다. 일부 샘플 코드

을 지금 :이 didMove라고 가정 해 봅시다

- (void) didMove:(UIPanGestureRecognizer*)recognizer { 
    UIView* view = [recognizer view]; 

    // Remember our UIImageViews are class members called, a & b 
    // 
    UIView* otherView = view == a ? b : a;  

    if (recognizer.state == UIGestureRecognizerStateBegin 
     || recognizer.state == UIGestureRecognizerStateChanged) { 

     // Moving left will have a negative x, moving right positive 
     // 
     CGPoint translation = [recognizer translationInView:view.superview]; 
     view.center = CGPointMake(view.center.x + translation.x, view.center.y); 

     // Reset so we always track the translation from the current view position 
     // 
     [recognizer setTranslation:CGPointZero inView:view.superview]; 

     if (CGRectIntersectsRect(view.frame, otherView.frame)) { 
      // Translate by the same number of points to keep views in sync 
      // 
      otherView.center = CGPointMake(otherView.center.x + translation.x, otherView.center.y); 
     } 
    } 
} 

그것은 정확하게 당신이 필요하지 않을 수 있지만, 그것은 당신에게 그것을 수행하는 방법은 좋은 아이디어를 줄 것이다.

1

하자 ... 당신이 바로 패닝/왼쪽에만 관심이있어, 그래서 ...

+0

Cocos2D를 사용하지 않으면이 기능을 구현하기가 정말 어려울까요? – Jason

+0

많은 계산과 사용자 지정 애니메이션이 더러운 작업입니다. 압도적 인 생각이 아닙니다. – Ariel

1

당신은,

첫째, 이런 식으로 할있는 UIImageView를 만들고에있는 UIImage를 할당 할 수 있습니다.

둘째, 사용자가 손가락을 움직이거나 제스처하면 프레임을 다시 설정하여 카드의 좌표를 변경하기 만하면됩니다.

카드가 멀리 떨어져 나오기를 원할 때, x 좌표를 음의 값으로 변경해야 뷰에서 벗어날 수 있습니다.

위의 이미지 뷰를 다시 코딩하는 코드는 필요한 지연을 사용하여 UIView setAnimation 메서드 그룹 내에서 제공되어야합니다.

푸시 효과를 얻으려면 새로운 이미지 뷰 (첫 번째 이미지 뷰와 동일한 이름을 가진)를 만들고보기 밖으로 유지하는 코드의 동일한 애니메이션 블록 내에서 호출되는 메서드가 있어야합니다. 그것은 화면 너비를 벗어납니다. (이전에 푸시 된 카드를 놓치지 마십시오.)

그런 다음 다시이 이미지 뷰가 화면 중앙에 나타나도록 새 이미지를 만드십시오. 위의 세 단계를 수행하면 지연 시간과 UIView 또는 UIImageView에 대한 코드의 애니메이션 블록, 필요한 효과를 얻을 것입니다.이 도움이

희망 .... 행복

코딩 ....