2012-07-21 111 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

任何原因,你不添加到滾動視圖self.view? – tiguero 2012-07-21 21:52:02

+0

僅供參考不要簽署您的文章:http://stackoverflow.com/faq#signatures – tiguero 2012-07-21 21:54:32

+0

哦,謝謝!我不知道我的帖子是自動簽名的。那麼我第一次嘗試通過(addsubview)向self.view添加scrollview會導致應用程序崩潰。用self.view = scrollview它工作得很好。我假設這是因爲沒有視圖添加scrollview到代碼中的那個地方。 – davetw12 2012-07-21 23:53:23

回答

2

您是否嘗試過實施scrollViewDidEndZooming:withView:atScale:


Apple's UIScrollView documentation

滾動視圖還處理縮放和的內容平搖。當用戶進行捏合或捏大手勢時,滾動視圖會調整內容的偏移和縮放比例。當手勢結束時,管理內容視圖的對象應該根據需要更新內容的子視圖。 (請注意,手勢可能會結束,而手指仍可能會停下。)手勢正在進行中時,滾動視圖不會向子視圖發送任何跟蹤呼叫。

UIScrollView類可以有必須採取UIScrollViewDelegate協議的委託。 對於縮放和平移工作,代理必須實現viewForZoomingInScrollView:scrollViewDidEndZooming:withView:atScale:;此外,最大(maximumZoomScale)和最小(minimumZoomScale)縮放比例必須不同。

+0

我有他們兩個實施,佩德羅。我的min和maxim縮放比例設置在我的委託對象上,分別爲1.0和4.0。 – davetw12 2012-07-22 15:11:45

+0

我在這裏恢復了一個很長的主題,但佩德羅可以請你指定如何實現scrollViewDidEndZooming:withView:atScale:?例如。比方說滾動視圖中只有一個UIImageView,你怎麼放大它? – Mirror318 2013-04-07 09:29:30

+0

有段時間沒有做iOS,我不記得確切。不過,通過iTunes免費提供了一些很好的視頻講座。它們由斯坦福大學以「開發iOS應用程序」的名義提供。我記得教授在某個時候詳細講述了這一點。抱歉,我現在無法獲得更多幫助! – 2013-04-17 20:53:49

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 
    
    `