2010-07-03 4 views
0

지도를 나타내는 스크롤보기가 있습니다. 사용자가지도를 확대 할 때지도에 핀이 있습니다. 내 응용 프로그램은 viewForZoomingInScrollView를 사용하여 모든 핀이 동일한 크기로 유지되도록합니다. 이 오른쪽 난 스크롤하면 3.1.3까지 OS 버전에 잘 작동 .. 여기서 코드의 일반적인 요지이다)iPhone ViewForZoomingInScrollView 동작이 iOS3.2에서 변경되었습니다. +

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    NSLog(@"view for zooming in scroll view..."); 

    double scale = mapScrollViewSize.width/scaledSize.width; 
    NSArray *pins = [mapView subviews]; 
    for (int i=0; i<[mapPins count]; i++) 
    { 
     AMapPin *mapPin = (AMapPin *)[mapPins objectAtIndex:i]; 
     if([mapPin isKindOfClass:[AMapPin class]]) 
     { 
      CGAffineTransform transform1 = CGAffineTransformMakeScale(scale, scale); 
      mapPin.transform = transform1; 
     } 
    } 
    return mapView; 
} 

를 레이어의 기준점을 설정하여 유지하는 핀 포인트의 위치를 ​​확보 나는 NSLog를 콘솔에서 반복적으로 볼 수 있으며 내 하위 뷰는 올바르게 크기가 조정됩니다. iOS4에서는 SDK 4와 iPhone 4의 에뮬레이터에서 셀렉터 만 반복적으로 호출되는 것보다는 한 번 호출되는 것 같습니다. 이전 OS 버전이므로 하위 뷰의 크기 조정은 전혀 영향을 미치지 않습니다.

나는 디자인이 변경되었습니다 생각하지만 난 내 최선의 선택을 위해 무엇인지 알고 싶어하거나 A)가 viewForZoomingInScrollView 새로운 3.2을 사용하는 방법) 최소한 나 변경을 유지하여 작동 있도록 내 코드를 변경 작업하지만 이전 OS 버전과 추가 코드의 최소 금액과 지원을 유지하는이 교차 버전 호환성 및 방법에 대한 전문가는 메신저하지 않습니다 scrollViewDidZoom라는 선택은 가장 효율적으로이 호환겠습니까 그것은

감사

답변

1

을 달성하기 위해? 이 작품으로에 걸린 스틱 (장치 및 에뮬레이터에서 테스트) 그래서

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    [self scrollViewDidZoom:scrollView]; 
    return mapView; 
} 

- (void)scrollViewDidZoom:(UIScrollView *)scrollView { 
    NSLog(@"view for zooming in scroll view..."); 

    double scale = mapScrollViewSize.width/scaledSize.width; 
    NSArray *pins = [mapView subviews]; 
    for (int i=0; i<[mapPins count]; i++) 
    { 
     AMapPin *mapPin = (AMapPin *)[mapPins objectAtIndex:i]; 
     if([mapPin isKindOfClass:[AMapPin class]]) 
     { 
      CGAffineTransform transform1 = CGAffineTransformMakeScale(scale, scale); 
      mapPin.transform = transform1; 
     } 
    } 
} 
+0

덕분에, 내가 이렇게했지만 그것을 할 수있는 "최고"방법이라고 확신하지 못했습니다, 문서는 새로운 scrollViewDidZoom에 매우 약합니다 그렇지 않으면 누군가가 다르게 말할 때까지, 환호! – Matt

관련 문제