2010-07-21 3 views
0

지도 목록이 포함 된 UITableView가 있습니다. 항목을 선택하면 새 하위보기가 기본 창에 추가되고 맵이 표시됩니다. 지도 내보기 컨트롤러에서 다음과 같은 방법이 표시 될 때마다 호출되는보기 :UIScrollView 높이 변경

- (void)showMap { 
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:mapImage]]; 

float imageHeight = tempImageView.image.size.height; 
float targetHeight = scrollView.frame.size.height - mapNavigationController.navigationBar.frame.size.height; 

scrollView.contentSize = tempImageView.image.size; 
scrollView.maximumZoomScale = 1.0; 
scrollView.minimumZoomScale = targetHeight/imageHeight; 
scrollView.clipsToBounds = YES; 

self.imageView = tempImageView; 
[tempImageView release]; 

[scrollView addSubview:imageView]; 
scrollView.zoomScale = scrollView.minimumZoomScale;} 

새로운있는 UIImageView가있는 UIScrollView에 때마다 추가되고 뷰가 사라질 때있는 UIImageView가 제거됩니다. 이미지가 가로 세로 비율에 맞도록 zoomScale이 계산됩니다.

처음으로 항목을 모두 처음 클릭하면 UIScrollView의 전체 높이가 맵 이미지에 채워지지만 다음에 항목을 클릭하면 UIScrollView 높이가 더 작아집니다. 주 창에는 탭 표시 줄이 있습니다. 내 질문에 이제

:

  • 어떻게있는 UIScrollView가 그것의 크기를 변경할 수 있습니까?
  • 그리고 targetHeight를 검색하는 다른 동적 인 방법이 있습니까?

미리 감사드립니다.

답변

0

좋아, 해결책을 찾지 못했습니다. 내 자신, 어쩌면 최고는 아니지만 역동적이고 작동합니다.

그러나 UIScrollView의 높이가 변경되는 이유는 여전히 이해할 수 없습니다. 누군가가 이유를 알고 있으면 의견을 말하십시오.

NSInteger scrollViewHeight = 0; 

- (void)showMap { 
    if (scrollViewHeight == 0) { 
     scrollViewHeight = scrollView.frame.size.height; 
    } else { 
     scrollView.frame.size.height = scrollViewHeight; 
    } 

    UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:mapImage]]; 

    float imageWidth = tempImageView.image.size.width; 
    float imageHeight = tempImageView.image.size.height; 
    float targetWidth = scrollView.frame.size.width; 
    float targetHeight = scrollViewHeight - mapNavigationController.navigationBar.frame.size.height; 
    float scale = targetHeight/imageHeight; 

    if (scale * imageWidth < targetWidth) { 
     scale = targetWidth/imageWidth; 
    } 

    scrollView.contentSize = tempImageView.image.size; 
    scrollView.maximumZoomScale = 1.0; 
    scrollView.minimumZoomScale = scale; 
    scrollView.clipsToBounds = YES; 

    self.imageView = tempImageView; 
    [tempImageView release]; 

    [scrollView addSubview:imageView]; 
    scrollView.zoomScale = scale;} 
} 
+0

당신이 이미 알아 냈 으면 좋겠다. 여기에 내 생각을 들려주세요. 내가 생각하기에 이것은 scrollView의 zoomScale을 변경했기 때문일 수 있습니다. 높이는 변경되고 모든 경우에 점점 작아집니다 :) –

1

나는 이와 비슷한 문제가있다. 문제는 내 UIViewController의 기본보기에 대해 서브 클래스를 UIScrollView으로하고, UIViewController에는 스크롤보기의 올바른 크기에 대한 자체 아이디어가 있음이 밝혀졌습니다.

나는 기본보기 서브 클래스 UIView을 만들기보다는 UIScrollView, 다음 뷰에 UIScrollView* content_view을 추가하고, 오히려 self보다는 content_view에 내 파단을 추가하여 해결했습니다.

도움이 될지 모르지만 ...