功能描述:支持網絡和本地gif、jpeg等格式圖片的瀏覽、捏合或雙擊放大縮小、長按保存到本地相冊、獲取gif圖片的循環次數和時長。
效果預覽.gif
主要部分:創建一個繼承于UIScrollView的子類視圖WSLPhotoZoom,這個視圖需要一個展示圖片的UIImageView,然后再結合UIScrollView自帶的縮放手勢的代理方法來達到縮放效果;最后只需要把這個能縮放的視圖放到需要展示圖片的視圖上就行了。當然,也可以結合UIPinchGestureRecognizer(捏合手勢)和UIPanGestureRecognizer(拖拽手勢)來實現這樣的效果。
#pragma mark -- UIScrollViewDelegate
//返回需要縮放的視圖控件 縮放過程中
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}
//開始縮放
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
NSLog(@"開始縮放");
}
//結束縮放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
NSLog(@"結束縮放");
}
//縮放中
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
// 延中心點縮放
CGFloat imageScaleWidth = scrollView.zoomScale * self.imageNormalWidth;
CGFloat imageScaleHeight = scrollView.zoomScale * self.imageNormalHeight;
CGFloat imageX = 0;
CGFloat imageY = 0;
imageX = floorf((self.frame.size.width - imageScaleWidth) / 2.0);
imageY = floorf((self.frame.size.height - imageScaleHeight) / 2.0);
self.imageView.frame = CGRectMake(imageX, imageY, imageScaleWidth, imageScaleHeight);
}
詳情不再啰嗦,我相信很多人都懂,直接上 Github ,有需要的可以去看看
與此功能相關的文章可以查看我之前的文章:
iOS 獲取gif圖片循環次數和時長
UIScrollerView當前顯示3張圖