2010-06-28 2 views
12

내장 된 콜 아웃이 너무 제한적이므로 이전에 MFCnnotationView에 대한 하위 뷰로 사용자 정의 콜 아웃 버블을 만들었습니다. 이 경우 콜 아웃 버블의 크기를 고려하여 MKAnnotationView를 centerOffset으로 변경해야합니다. iOS 4가 출시되기 전에이 모든 작업이 완벽하게 수행되었습니다. 이제 iOS 4에서는 centerOffset 속성을 완전히 업데이트하지 않으므로 핀과 버블이 아래로 오른쪽으로 튀어 나온 것처럼 보입니다 (설명 선 풍선의 왼쪽 위 모서리는 이제 핀 포인트가 있어야하는 위치에 있습니다) .MKMapView는 iOS 4의 centerOffset 업데이트를 무시합니다.

iOS 4에서이 기능이 변경된 이유를 아는 사람이 있습니까? MKMapView에서 새 centerOffset을 인식하도록 할 수 있습니까? 이것은 사과가 도입 한 버그입니까?

도움 주셔서 감사합니다.

+0

그냥 던지기를 원했고 같은 문제가 발생했습니다. 현재 오프셋 변경을 보정하기 위해 주석 중심을 조정했습니다. 그것은 이상적입니다. –

답변

0

centerOffset 대신 모든 버전에서 올바르게 작동하는 setRegion을 사용할 수 있습니다.

CGPoint point = [mapView convertCoordinate:selectedAnnotation.coordinate toPointToView:self.view]; 

CGRect frame = [customView frame]; 
frame.origin.y = point.y - frame.size.height; 
frame.origin.x = point.x - frame.size.width/2; 

MKCoordinateRegion region = [mapView convertRect:frame toRegionFromView:self.view]; 
[mapView setRegion:region animated:YES]; 
+0

지도의 영역을 조정하는 것이 아니라 실제 주석보기의 중심 오프셋을 조정하려고합니다. –

+0

@ Yannick, 네. 그러나 동일한 크기이지만 새로운 중심 좌표로 영역을 설정하면지도가 다시 중심에 배치됩니다. 나는 이것이 당신이 가진 똑같은 문제를 안고있는 대답이라고 말하고 싶습니다. – makdad

+2

그것은 내가 성취하려고하는 것이 아닙니다. 현재지도 지역은 동일하게 유지되어야합니다. 새로운 centerOffset 속성에 따라 주석 뷰를 이동하고 싶습니다. –

4

동일한 문제가 있습니다. centerOffset은 처음에만 고려됩니다. 내부적으로 변경되지만보기는 이동되지 않으므로 직접보기를 이동해야합니다.

센터를 필요한 오프셋으로 조정하여보기를 이동할 수 있습니다. 선택한보기는 선택되지 않은보기의 왼쪽 위 모서리에 정렬 된 상태로 유지되므로 센터를 다시 정렬해야합니다. 선택

-> 비 선택 : 여기 내 사건

self.center = CGPointMake(self.center.x + 56.0, self.center.y + 130.0); 
self.centerOffset = CGPointMake(5.0, -14.0); 

선택되지 않은 -> 선택된 : 130 뷰 사이의 높이 차이 (중심점 아래쪽에)이다

self.center = CGPointMake(self.center.x - 56.0, self.center.y - 130.0); 
self.centerOffset = CGPointMake(64.0, -81.0); 

56은 센터의 X 오프셋의 차이입니다.

기억해 두어야합니다. 확대/축소시에는 중심 오프셋을 고려해야하므로 중심 오프셋을 변경해야합니다.

호프가 도움이 되었으면 좋겠습니다. 몇 시간을 잃었습니다. 버그 보고서를 Apple에 제출하는 것을 잊지 마십시오.

+0

감사합니다, 이것은 나를 도왔습니다! – elsurudo

+0

나를 위해 일했습니다. 감사합니다! –

6

당신이 MKAnnotationView하지 MKPinAnnotationView를 사용하고 있는지 확인하십시오! MKPinAnnotationView -object (물론 하위 클래스 인 경우 제외)의 centerOffset을 설정할 수 없습니다.

관련 문제