2012-07-21 4 views
0

UIScrollView의 확대/축소 기능에 문제가 있습니다. 그것은 전혀 작동하지 않습니다. 비슷한 게시물을 읽었으므로 다른 사람들이 사용했던 수정본 중 아무 것도 나에게 적합하지 않습니다. 내 viewController 참조 UIScrollViewDelegate, UIScrollView에 대한 인스턴스 변수가 있습니다, 내 하위 뷰를 UIScrollView 대리자 개체로 선언하고 (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView에 대한 구현이 있습니다. 여기 내에는 loadView 함수는 다음과 같습니다UIScrollView가 확대되지 않음

(void)loadView 
{ 
    CGRect frame = CGRectMake(0, 0, 320, 480); 

    scrollView = [[UIScrollView alloc] initWithFrame:frame]; 
    [scrollView setScrollEnabled:YES]; 

    CGRect reallyBigRect; 
    reallyBigRect.origin = CGPointZero; 
    reallyBigRect.size.width = frame.size.width * 2.0; 
    reallyBigRect.size.height = frame.size.height * 2.0; 
    [scrollView setContentSize:reallyBigRect.size]; 

    CGPoint offset; 
    offset.x = frame.size.width * 0.5; 
    offset.y = frame.size.height * 0.5; 
    [scrollView setContentOffset:offset]; 


    [scrollView setMinimumZoomScale:1]; 
    [scrollView setMaximumZoomScale:5]; 
    [scrollView setUserInteractionEnabled:YES]; 
    self.scrollView.delegate = self; 


    self.view = scrollView; 

    views = [[HypnosisView alloc] initWithFrame:reallyBigRect]; 

    [scrollView addSubview:views]; 

    [self.view setBackgroundColor:[UIColor clearColor]]; 

} 

이 코드는 나를 잘 스크롤 할 수 있지만 확대하는 것은 존재하지 않는다. 사람으로부터 듣고

희망, 데이브

+0

당신이있는 ScrollView를 추가하지 않는 이유 자기야? – tiguero

+0

FYI는 귀하의 게시물에 서명하지 않습니다 : http://stackoverflow.com/faq#signatures – tiguero

+0

오, 고마워요! 내 글이 자동으로 서명되었음을 몰랐습니다. 처음으로 scrollview를 (addsubview를 통해) self.view에 추가하면 응용 프로그램이 충돌을 일으킬 수 있습니다. self.view = scrollview로 잘 작동합니다. 나는 거기에 코드에서 그 위치에 scrollview를 추가 할보기가 있기 때문에 그것이 있다고 가정합니다. – davetw12

답변

2

scrollViewDidEndZooming:withView:atScale:을 구현하는 시도?


Apple's UIScrollView documentation에서 :

스크롤 뷰는 줌과 패닝의 콘텐츠 처리한다. 사용자가 핀치 인 또는 핀치 아웃 제스처를하면 스크롤 뷰는 내용의 오프셋 및 크기를 조정합니다. 제스처가 끝나면 내용보기를 관리하는 개체는 필요에 따라 내용의 하위보기를 업데이트해야합니다. 제스처가 끝나고 손가락이 여전히 아래쪽에있을 수 있습니다. 제스처가 진행되는 동안 스크롤 뷰는 하위 뷰에 추적 호출을 보내지 않습니다.

UIScrollView 클래스에는 UIScrollViewDelegate 프로토콜을 사용해야하는 대리인이있을 수 있습니다. 확대/축소 및 이동이 작동하려면, 대표자 을 구현해야합니다. viewForZoomingInScrollView:scrollViewDidEndZooming : withView : atScale :; 또한 최대 (maximumZoomScale) 및 최소 (minimumZoomScale) 줌 배율이 달라야합니다.

+0

둘 다 구현했습니다, Pedro. 내 대리자 객체에 설정된 최소 및 최대 줌 배율을 각각 1.0 및 4.0으로 설정했습니다. – davetw12

+0

여기에서 오랫동안 완성 된 주제를 다시 부각시키고 있습니다 만, Pedro는 scrollViewDidEndZooming : withView : atScale :을 구현하는 방법을 명시 해 주실 수 있습니까? 예 : 스크롤보기 안에 단 하나의 UIImageView가 있다고 해봅시다. 어떻게 확대합니까? – Mirror318

+0

잠시 iOS를 해본 적이 없으며 정확히 기억하지 못합니다. 그러나 iTunes를 통해 무료로 제공되는 훌륭한 비디오 강의가 있습니다. 스탠포드에서는 "iOS 용 앱 개발"이라는 이름으로 제공됩니다. 나는 이것을 어느 정도 자세히 다루는 교수를 기억한다. 미안 해요, 지금 당장 더 많은 도움이 될 수 없어요! –

0

두 가지를 사용할 수 확대를 위해 수행해야 :

  1. UIScrollViewDelegate 프로토콜을 사용하여 viewForZoomingInScrollView:UIScrollView -> UIView?을 구현합니다. 스크롤 막대 위임을 구현 클래스로 설정하십시오. 이것은 UIView의 반환이 확대 될 것으로 기대합니다. 그래서 간단한 예는 다음과 같습니다

    
    @IBOutlet var myZoomableImageView: UIImageView?` 
    
    override func viewDidLoad() { 
        myScrollView?.delegate = self 
    } 
    
    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
        return myZoomableImageView 
    } 
    
  2. UIScrollView.minimumZoomScale를 사용하여 스크롤 뷰에 최대 및 최소 줌을 설정하고 UIScrollView.maximumZoomScale과 같이 :

    
    myScrollView?.minimumZoomScale = 1.0 
    myScrollView?.maximumZoomScale = 3.0 
    
    `