2012-05-14 3 views
3

최소 확대/축소 배율 변경에 대한 응답으로 UIScrollView를 올바르게 업데이트하는 데 문제가 있습니다.UIScrollView가 하위 뷰를 변경 한 후 minimumZoomScale을 준수하지 않습니다.

있는 ScrollView는 하위 뷰로서 UIImageView에 있으며, 상기의 UIImageView의 화상 속성 UIPickerView의 didFinishPickingMediaWithInfo 방법에 응답하여 설정된다 :이 정확하게 화상이 이용 첨가 처음 작동

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    UIImage *takenImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    [self.imageView setImage:takenImage]; 
    [self.imageView setFrame:CGRectMake(self.imageView.frame.origin.x, self.imageView.frame.origin.y, takenImage.size.width, takenImage.size.height)]; 

    [self.scrollView setContentSize:CGSizeMake(takenImage.size.width, takenImage.size.height)]; 

    [self.scrollView setMinimumZoomScale:[self.scrollView frame].size.width/takenImage.size.width]; 
    [self.scrollView setMaximumZoomScale:2.0]; 
    [self.scrollView setZoomScale:[self.scrollView minimumZoomScale] animated:YES]; 

    [self dismissModalViewControllerAnimated:YES];   

} 

방법. 그러나이 메서드가 다시 트리거 된 경우 - 첫 번째로 동일한 이미지를 추가하는 경우에도 이후 이미지가 전체 크기로 scrollView에 표시되고 축소 할 수 없으며 확대 만 가능합니다.

' scrollView의 contentSize, zoomScale, minimumZoomScalemaximumZoomScale을 로그에 덤프했으며 매번 동일합니다. minimumZoomScale은 매번 올바르게 계산됩니다.

마치 scrollView가 minimumZoomScale이 1.0으로 다시 그려지는 것처럼 보이며 명시 적으로 설정되어 있다는 사실을 무시합니다. 내가 여기서 빠진 게 분명해?

+0

업데이트 : 나는 문제를 해결 작업 한 이미지 따기가 취소 된 경우있는 ScrollView를 누킹으로 - superView에서 제거한 다음 nil로 설정하십시오. 그런 다음 didFinishPickingMediaWithInfo 메서드가이를 다시 만듭니다. 그것은 작동하지만, 문제를 해결하기 위해 무거운 손잡이처럼 보입니다 ... – TimD

답변

13

문제는 -이 동작이 문서화되어 있는지 확실하지 않은 것 같습니다. 현재 확대/축소 배율이 1.0이 아닌 다른 값으로 설정되어있는 동안 콘텐츠 크기가 다시 설정됩니다.

수정은 간단하다 : 새로운 컨텐츠 크기 설정 전에 1.0 zoomScale 속성을 재설정

// See http://stackoverflow.com/questions/10586577 
// first reset before new content size 
scroller.zoomScale = 1.0f; 
// set new content size 
scroller.contentSize = newImage.size; 
// ... adjust minimum/maximum zoom scales if needed 
+1

고마워요. * 모든 * 내 머리카락을 당기는 것에서 저를 구해 주셨습니다. :) 많은 점을 높이 평가하고 존경합니다! – shabbirh

관련 문제