天天看點

【iOS開發】---- 照片多張浏覽

//照片多張浏覽 uiscrollview ,雙指放大,縮小,輕按兩下放大縮小

        這裡實作的比較簡單,就是用了一個大的UIScrollview來放置多個小的UIScrollview,圖檔是放在小的UIScrollview上,大的UIScrollview實作左右滑動,小的實作放大縮小。

放大捏小依靠的是UIScrollview的代理。二輕按兩下大小變化用到了手勢:

UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap)];
        singleTapGesture.numberOfTapsRequired = 1;
        [self addGestureRecognizer:singleTapGesture];
        
        
        UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap)];
        doubleTapGesture.numberOfTapsRequired = 2;
        [self addGestureRecognizer:doubleTapGesture];
        
        [singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
        
        [singleTapGesture release];
        [doubleTapGesture release];
           

         特别記得要添加這句話:

[singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
           

         用于區分輕按兩下與單擊。

在實作這個功能的時候我遇到了一個問題,就是目前圖檔放大之後,拖拽到下一張圖,然後,傳回之前那張,發現圖檔是放大的,這樣體驗不好,于是就想在滑到了下一張圖檔的時候把上一張圖檔大小還原,于是查閱文檔,發現了下面這個代理方法可用:

- (void)scrollViewDidEndDecelerating:(ImageScrollView *)scrollView
{
    int lastPage = pageControl.currentPage;
    int index = fabs(photoListScrollView.contentOffset.x) / photoListScrollView.frame.size.width;
    
    pageControl.currentPage = index;
    
    if (index !=lastPage)
    {
        ImageScrollView *sView = (ImageScrollView *)[self.view viewWithTag:1000+lastPage];
        [sView setZoomScale:1.0];
    }   
}
           

這個方法可以很好的解決這個問題。具體的實作可以看Demo(如果有錯誤,歡迎指正,大家共同學習):

猛戳這裡下載下傳Demo