2010-02-05 4 views
4

사용자 정의 UIViewController 하위 클래스를 UISmrollView, 포함하는 컨트롤을 포함하여 제어 할 :UIScrollView 홀수 동작 : 확대, 축소, 축소, 내용보기 해제

UIScrollView 내 이미지를 확대 할 수 및 주위에 팬 -하지만 그렇게 할 경우 뷰의 중심이 이미지의 중심이 아니며 완전히 축소하면 이미지가 중앙에서 벗어납니다. 그 시점에서 최소한의 줌 배율을 사용하고 있기 때문에 더 많은 것을 할 수 있습니다. 내 이미지를 다시 센터링하기 위해 팬을 움직일 수는 없습니다.

축소 할 때, UIScrollView는 contentSize의 영역을 경계 아래로 다시 배치하여 내용보기의 가장자리 (또는 내용보기의 크기 + contentInset)를 넘지 않도록합니다. 나는이 가정에서 틀린가?

그렇다면이 동작을 제공하려면 어떻게해야합니까?

여기 내 코드 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    imageView.image = image; 
    [imageView sizeToFit]; 

    float minimumScale = [imageScrollView frame].size.width/[imageView frame].size.width; 

    imageScrollView.contentSize = [imageView frame].size;  
    imageScrollView.maximumZoomScale = 2.0; 
    imageScrollView.minimumZoomScale = minimumScale; 

    imageScrollView.zoomScale = imageScrollView.minimumZoomScale; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return imageView; 
} 

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale 
{ 
    // nothing 
} 

편집 : 솔루션!

원하는 동작을 얻으려면 clipsToBounds = YES을 UIScrollView에 설정해야합니다. UIScrollView가 아닌 ​​UIView의 속성이기 때문에 처음에는 찾지 못했습니다.

답변

1

내 UIImageView에서 핀치 인과 아웃을 사용하여 동일한 것을 보았습니다. IB에서 "Clip subviews"를 확인하고 이미지 뷰가 더 잘 작동하기 시작했습니다.