2014-07-24 2 views
0

이 질문을 할 수있는 적합한 곳인지 여부는 잘 모르겠습니다.이미지의 일부는 iOS에서 클릭 가능합니다.

UIImageView에서 표시 할 때 이미지가 있습니다. 이 이미지보기는 전체 화면을 사용합니다. 이미지에는 페이 스북, 트위터 및 이메일 버튼이 있습니다 (실제로는 버튼이 아니라 이미지로 디자인되었습니다).

나는 페이스 북, 트위터 및 이메일 "버튼"을 탭핑 할 수있게하고 무언가를하고 싶습니다. 이것이 가능한가?

+0

두 가지 방법 : 1) reecon에서 설명한대로 touchesEnded를 사용하고 "dead reckoning"으로 접촉을 찾습니다. 2) 투명 버튼을 이미지 위에 배치하고 다른 버튼과 같이 사용합니다. –

답변

1

올바른 방법으로 수행하지 않습니다.

대부분의 경우 논리적 구성 요소가 많으며 각 구성 요소마다 고유 한 동작 (애니메이션/태핑 가능/편집 가능 구성 요소)이 있습니다. 서로 다른 논리 구성 요소마다 다른 요소를 배치해야합니다.

귀하의 경우 배경으로 전체 화면 UIImageView을 설정하고 텍스트에 UILabel 초를 추가하십시오 (텍스트가 영향을주지 않으면 제외시킬 수 있습니다. 그게 내가 미래에 더 융통성있는 방식으로 선호하기 때문에). 그 중에서도 Facebook 및 twitter 버튼과 같이 탭 가능한 요소에 UIButton을 추가 할 수 있습니다.


편집 : A와 같은 투명 UIButton 추가

1) : 당신은 그냥 별도의 이미지를 만들기 싫어하면, 당신은 항상 보이지 않는 버튼 (텍스트없이 버튼) 각 버튼에 대한

+0

확인. 이것은 좋은 것 같습니다. 그래서 배경 이미지와 버튼을위한 이미지를 하나씩 만들고 UIButtons를 사용합니다. – Siddharth

+1

@Siddharth 예. 이것은 내가하는 일이며 나는 다른 사람들이하는 일이라고 믿습니다. Apple이 세 번째 화면 크기를 만드는 소문 (또는 사실)을 고려할 때 이러한 요소를 분리하면 다른 화면에 적용 할 때 훨씬 쉽게 작업을 수행 할 수 있습니다. –

0

touchesEnded:withEvent: 메서드를 구현하고 터치 위치가 이미지에서 원하는 단추의 사각형 내에 있는지 확인하십시오.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesEnded:touches withEvent:event]; 

    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:self.view]; 

    if (CGRectContainsPoint(_facebookButtonRect, location)) 
    { 
     // Do your stuff. 
    } 
} 

이미지보기 상단에 보이지 않는 버튼을 배치 할 수도 있습니다.

+0

'_facebookRect' 또는'_twitterButtonRect'를 결정하는 방법은 무엇입니까? 모든 버튼은 동일한 이미지의 일부이며 별도의 이미지로로드되지 않습니다. – Siddharth

+0

프레임을 하드 코드해야합니다. – RaffAl

0

을 만들 수 있습니다 이미지보기로 하위보기. 프레임을 설정하여 이미지 위에 놓습니다. 버튼에 alpha=1backgroundColor = [UIColor clearColor]을 사용하십시오. 또한 버튼 제목을 ""로 설정하십시오. 이 모든 것은 당신에게 여전히 터치에 반응하는 보이지 않는 버튼을 주어야합니다.

2) 평상시와 마찬가지로 버튼 탭 이벤트를 처리합니다.

관련 문제