2011-07-27 11 views
1

저는 iPad 용 iOS 응용 프로그램에서 일하는 초보자입니다. 성공적으로 UIImageView를 사용하여 어린이 도서 앱을 구현했습니다. 또한 스 와이프 제스처를 구현하여 페이지를 가로 질렀습니다. 각 페이지는 UIImageView 안에 단일 이미지로로드되고 장면을 서술하는 오디오를 재생합니다.UIImageView의 상호 작용

이제 내 페이지에 몇 가지 상호 작용 기능을 추가하고 싶습니다. 예를 들어 UIImageView에로드 된 단일 이미지가 있습니다.이 이미지에는 특정 동물에 대한 몇 가지 방언과 방언이 포함되어 있습니다 ... 사용자가 특정 동물을 두 드릴 때마다 움직임을 보여 주어야합니다 (사자가 활발한 것처럼 보일 수 있습니다) 내 응용 프로그램은 해당 동물의 소리가 포함 된 오디오 파일을 재생해야합니다 ... 어떻게이 기능을 얻을 수 있습니까? 나는 그것을 구현할 수 있도록 개념을 이해할 필요가있다. 내가 모든 동물에 대한 별도의 이미지를 가지고 자신의 UIImageView에서로드해야하고 메인 (또는 배경) UIImageView 내부의 모든 UIImageViews가 있습니까? 누군가가 그러한 기능을 어떻게 구현해야하는지에 대한 개념을 설명 할 수 있다면 고맙겠습니다.

동물에 대한 감동으로 화면의 각 동물에 대한 핫스팟으로 작동하고 터치 된 동물에 대한 사운드 파일을 재생하는 CGRects 목록을 정의 할 수 있지만 어떻게 이러한 핫스팟을 동적으로 정의 할 수 있습니까? 이는 특정 페이지/이미지에서의 동물의 위치에 따라 각 페이지에 매우 유용하기 때문입니다. 또한 이것은 특정 동물을위한 움직임/애니메이션을 구현하는 데 도움이되지 않을 수도 있습니다.

답변

0

보이지 않는 버튼이 작동해야합니다. 그것은 처음에 alloc'ed되지 않았기 때문에, 버튼을 할당 해제 할 필요가 없습니다 (

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
     btn.frame = CGRectMake(7, 5, 73, 30); 
     [btn setImage:[UIImage imageNamed:@"btn_pixel.png"] forState:UIControlStateNormal]; 
     [btn addTarget:self action:@selector(doSomething) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:btn]; 

: 동적으로 도청 할 영역에 맞게 1 개 픽셀 투명 PNG를 사용하고 버튼의 크기를)

그런 다음 "doSomething"이라는 함수를 만들어 ... 원하는 것을 수행하십시오. 귀하의 예에서는 동물 소리를 재생합니다.

+0

Thx Jeffrey,이 방법을 시도해 보겠습니다. 그것은 어리석게 들릴지도 모르지만, 어떻게 거기에 버튼을위한 프레임을 만들 수 내 이미지 (동물 정글에 앉아 몇)와 동물 위치의 좌표를 찾을 수 있습니까? – Alex

+0

Photoshop에서 이미지를 열고 마우스를 움직이면 (정보 패널이 열린 상태에서) x 및 y 좌표를 얻을 수 있습니다. 그런 다음 마스크를 그리고 폭과 높이에 대한 w와 h 값을 봅니다 ... 또한 "눈으로 볼"수 있습니다 - 완벽하게 정확할 필요는 없습니다. –

+0

테스트 할 때 btn_pixel.png 파일을 단색 (예 : 밝은 녹색)으로 바꿔서 터치 영역의 위치를 ​​볼 수 있습니다.:-) –

0

동물의 경우 별도의 그림이있는 경우 UIButtons로 사용하여 그림을 "사용자 지정"하고 동물 그림을 선택해야합니다.

그렇지 않으면 동물의 보이지 않는 단추를 놓고 아래 코드를 수행하면 올바른 크기의 투명도와 사용자 지정 UIButton이 작동해야합니다.

는 수행이 버튼은 소리를 할 수 있도록하려면 다음을 수행하는 데 도움이

-(IBAction)lionRoar { 

NSString *path = [[NSBundle mainBundle] 
        pathForResource:@"LionRoar" ofType:@"mp3"]; 
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
[theAudio play]; 


} 

희망을!

+0

Thx Phill. 현재 동물들은 별개의 그림이 아니며 정글에 앉아있는 동물 몇 마리를 보여주는 이미지가 하나 있습니다. – Alex

+0

Maby 위에 보여준 코드가있는 동물의 보이지 않는 버튼? 나는 내 답을 업데이트했다. – Phill

+0

필, 필자는 라이온이 다른 이미지에서 다른 위치에 앉아있을 수도 있음을 알고 있습니다. 각 이미지의 라이온스 위치에 보이지 않는 버튼을 추가해야합니까? IB를 사용합니까? 이 이미지를 동적으로 추가하는 더 좋은 방법이 있습니까? – Alex